我正在创建一个带注释的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)}
请告诉我如何解决这个问题。
答案 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