我有一个Spring bean,在Spring Bean中我有一个对其他bean列表的依赖项。我的问题是:如何注入一个通用的bean列表作为该bean的依赖项?
例如,一些代码:
public interface Color { }
public class Red implements Color { }
public class Blue implements Color { }
我的豆子:
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返回接口类型还是类?
谢谢你的帮助!
你所拥有的应该可以工作,在setter上有一个@资源
或@自动加载
应该将所有颜色实例注入到你的列表中
如果您想更显式,您可以将集合作为另一个bean返回:
@Bean
public List<Color> colorList(){
List<Color> aList = new ArrayList<>();
aList.add(blue());
return aList;
}
并以这种方式将其用作自动加载字段:
@Resource(name="colorList")
public void setColors(List<Color> colors) {
this.colors = colors;
}
或
@Resource(name="colorList")
private List<Color> colors;
关于返回接口或实现的问题,任何一个都应该有效,但接口应该是首选。
问题内容: 我有一个代码: 我期望一旦启动应用程序BeanSample.getSomeBean(),然后SomeBean将开始由“ someBean”提供。 现在我有一个错误: 没有定义名为“ someBean”的bean 实际上,我有点不明白应该使用哪个应用程序上下文来提取我的豆子? 关于@Configuration : 有什么原因,为什么我应该在这里使用@Configuration注释?(通过
我已经使用Spring几十年了,但以前从未遇到过这个用例。 是否有方法注入所有带特定注释的bean,例如,所有带服务的bean或所有带自定义注释的bean? 我唯一的想法是注入上下文,获取所有bean并手动过滤。如果这是唯一的方法,Spring是否公开了一种递归扫描类层次结构以查找(元)注释的方法(因为大多数Spring注释都可以用作元注释)?
当有多个具有相同名称/类型的bean时,我对Spring中的DI注入机制有点困惑。根据Pivotal“核心Spring”课程的考试幻灯片,Spring对相同豆子的行为可以归结为: 可以多次定义同一bean Spring注入上次定义的bean 使用订单可以修改加载机制(从而修改最后加载哪个bean) 然而,在下面的示例中,Spring将忽略任何顺序注释,并从Import语句中最后提到的Config类
问题内容: 我试图将在Spring上下文中定义的bean注入到CDI托管组件中,但没有成功。不会注入Bean,而是在每次执行注入时都会创建一个新实例。我的环境是带有JBoss Weld的Tomcat 7。 Spring ApplicationContext很简单: CDI托管bean如下所示: 这是我的 但是,当我从JSF页面访问属性时,每次访问时都会创建一个新实例。这是一个简单的示例: 我得到以
结果是- 属性BeanA和BeanB只是字符串值,那么如何指定bean名称呢?