0

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

@Component
public class MyClass
{

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

   //Getters and setters  

}

我收到以下异常

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

我也试过这个

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

我收到以下异常

没有为依赖项找到类型为 [java.util.ArrayList] 的匹配 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{@javax.annotation.Resource(shareable=true, mappedName=, description=, name=, type=class java.lang.Object, authenticationType=CONTAINER)}

请让我知道如何解决这个问题。

4

1 回答 1

2

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

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

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

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

@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 -列表

于 2013-05-28T05:22:31.477 回答