无法将数组列表作为依赖项注入

时间:2013-05-28 05:13:45

标签: java spring

我正在创建一个带注释的bean。

@Component
public class MyClass
{

    @Autowired
    private ArrayList<String> myFriends= new ArrayList<String>();

   //Getters and setters  

}

我收到以下异常

无法自动装配字段:private java.util.ArrayList com.mypackage.MyClass.myFriends;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型为[java.util.ArrayList]的匹配bean:期望至少有一个bean可以作为此依赖项的autowire候选者。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}

我也试过这个

@Resource
    private ArrayList<String> myFriends= new ArrayList<String>();

我收到以下异常

找不到类型为[java.util.ArrayList]的匹配bean用于依赖:预期至少有一个bean符合此依赖关系的autowire候选资格。依赖注释:{@ javax.annotation.Resource(shareable = true,mappedName =,description =,name =,type = class java.lang.Object,authenticationType = CONTAINER)}

请告诉我如何解决这个问题。

1 个答案:

答案 0 :(得分:2)

在XML文件中,您需要定义一个列表。

在XML文件中包含util命名空间并添加以下bean定义。

<util:list id="myFriends">
 <value>string1</value>
 <value>string2</value>
 <value>string3</value>
</util:list>

您需要将变量的类型更改为List<String>而不是ArrayList<String>。这将使注入更容易,也是一个更好的编码实践。您需要添加限定符注释以指定需要注入的bean的id,如果只有一个这样的列表,则可能不需要限定符。

@Component
public class MyClass {
    @Autowired
    @Qualifier("myFriends")
    private List<String> myFriends= new ArrayList<String>();
    //Getters and setters
}

链接到util:list的spring参考文档 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/xsd-config.html#xsd-config-body-schemas-util-list