我有一个 Spring bean,在 Spring Bean 中我依赖于其他 bean 的列表。我的问题是:我怎样才能注入(inject)一个通用的 bean 列表作为该 bean 的依赖项?
例如一些代码:
public interface Color { }
public class Red implements Color { }
public class Blue implements Color { }
我的 bean :
public class Painter {
private List<Color> colors;
@Resource
public void setColors(List<Color> colors) {
this.colors = colors;
}
}
@Configuration
public class MyConfiguration {
@Bean
public Red red() {
return new Red();
}
@Bean
public Blue blue() {
return new Blue();
}
@Bean
public Painter painter() {
return new Painter();
}
}
问题是;如何获取 Painter 中的颜色列表?另外,附带说明:我应该让 @Configuration 返回接口(interface)类型还是类?
感谢您的帮助!
最佳答案
你有什么应该工作,有一个 @Resource
或 @Autowired
在二传手上应该将 Color 的所有实例注入(inject)你的 List<Color>
字段。
如果你想更明确一点,你可以将一个集合作为另一个 bean 返回:
@Bean
public List<Color> colorList(){
List<Color> aList = new ArrayList<>();
aList.add(blue());
return aList;
}
并以这种方式将其用作 Autowiring 字段:
@Resource(name="colorList")
public void setColors(List<Color> colors) {
this.colors = colors;
}
或
@Resource(name="colorList")
private List<Color> colors;
关于返回接口(interface)或实现的问题,任何一个都应该有效,但接口(interface)应该是首选。
关于java - 使用 Spring @Configuration 注释注入(inject) bean 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892757/