注入bean的集合与使用ApplicationContextAware到getBeansOfType

时间:2017-06-15 18:33:21

标签: spring

如果我这样做

@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    myBeans = applicationContext.getBeansOfType(MyBean.class).values();
}

这与将它放在我的构造函数中具有完全相同的效果吗?

@Inject
public MyClass(Collection<MyBean> myBeans) {
    this.myBeans = myBeans;
}

1 个答案:

答案 0 :(得分:0)

在commot case yes(没有@Lazy,@ Value,required ...)中,它们的效果相同。

在Spring应用程序中,这两个注释的工作方式与Spring决定支持除了自己的一些JSR-299注释相同。

但是有一些注释不会被@Inject像 - laze所取代,因为它是spring的一部分而不是jsr的一部分。

看起来 - 如果你所有的@Inject for Collection myBeans你在春天得到的所有东西,但是对于所有由春天也加入的@inject

而言并非如此

这里是关于比较@AUTOWIRED和@INJECT SPRING INJECTION WITH @RESOURCE, @AUTOWIRED AND @INJECT

的博客