我试图通过lombok RequiredArgsConstructor将List注入到构造器中
@Slf4j
@Component
@RequiredArgsConstructor (onConstructor = @_(@Inject))
public class ClassA {
@NonNull private List<GoodSkill> skills;
......
}
但是有错误:
[tomcat:launchProperties] org.springframework.beans.factory.UnsatisfiedDependencyException: 在URL中创建名称为“ ClassA”的bean时出错 [jar:file:/XXXXX/ClassA.class]:表达了不满意的依赖性 通过构造函数参数0;嵌套异常为 org.springframework.beans.factory.NoSuchBeanDefinitionException:否 类型为java.util.List <\ GoodSkill>的合格Bean:预期至少为1 符合自动装配候选条件的bean。依赖项注释:{}
似乎没有用于“ List <\ GoodSkill>”的bean?我想在注入列表或其他集合时有一些特殊规则?至于GoodSkill类,我想我还应该添加@Component之类的注释?
========
编辑: 更奇怪的是,我重新构建程序包,现在不再抱怨找不到List <\ GoodSkill>的bean,而是找不到GoodSkill的bean。我很困惑。
答案 0 :(得分:1)
仅可对托管bean进行注入。因此,对于列表,您应该在某个地方输入以下内容:
@Component
public class GoodSkillList extends ArrayList<GoodSkill>{}
供容器查找。
也许你有?如果您有许多这样的bean,那么容器/ Spring可能无法决定使用哪个。在这种情况下,您可以通过多种方式来划定可能的替代方式,例如,可以将ClassA
设置为仅接受:
@NonNull private GoodSkillList skills;
或者您也可以研究如何按名称进行注入/自动接线。