获得给定类型的春豆的最佳做法

时间:2017-01-25 12:38:12

标签: java spring

我已阅读过多个stackoverflow问题,applicationContext.getbean是一个坏主意。

Why is Spring's ApplicationContext.getBean considered bad?

我想知道在春天是否有更好的方法来扫描给定类型的bean。

我的用例是在spring启动时获取给定类型的bean,并在这些bean上调用一些方法。

据我所知,只有两种方法可以做到这一点。

  1. 将应用程序上下文自动装入spring bean并使用appContext.getBeansOfType。
  2. 挂钩后处理器并按

    过滤我们给定类型的bean

    if(bean实例类型)

  3. 我觉得在后处理器中挂钩只是为了处理一种类型的bean不是一个好主意。因为这将拦截所有bean初始化。

    有人能建议更好的方法来解决我的用例吗? (给定类型的getBeans)

1 个答案:

答案 0 :(得分:1)

Spring对List自动装配参数进行了特殊处理。如果你指定一个bean,例如像这样:

@Component
class MyBean {
  @Autowired
  MyBean(List<MyType> listOfMytype) {

  }
}

然后spring不会在你的applicationContext中搜索List<MyType>类型的bean,而是会搜索所有实现MyType的bean并将它们作为列表注入(which may suck if you actually want to get a list injected) 。因此,您将获得给定类型的所有bean。