我已阅读过多个stackoverflow问题,applicationContext.getbean是一个坏主意。
Why is Spring's ApplicationContext.getBean considered bad?
我想知道在春天是否有更好的方法来扫描给定类型的bean。
我的用例是在spring启动时获取给定类型的bean,并在这些bean上调用一些方法。
据我所知,只有两种方法可以做到这一点。
挂钩后处理器并按
过滤我们给定类型的beanif(bean实例类型)
我觉得在后处理器中挂钩只是为了处理一种类型的bean不是一个好主意。因为这将拦截所有bean初始化。
有人能建议更好的方法来解决我的用例吗? (给定类型的getBeans)
答案 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。