Java 获取给定类型的SpringBean的最佳实践
我在多个stackoverflow问题上读到,applicationContext.getbean是个坏主意 我想知道是否有更好的方法在spring中扫描给定类型的bean 我的用例是在spring启动期间获取给定类型的bean,并在这些bean上调用一些方法 据我所知,只有两种方法可以做到这一点Java 获取给定类型的SpringBean的最佳实践,java,spring,Java,Spring,我在多个stackoverflow问题上读到,applicationContext.getbean是个坏主意 我想知道是否有更好的方法在spring中扫描给定类型的bean 我的用例是在spring启动期间获取给定类型的bean,并在这些bean上调用一些方法 据我所知,只有两种方法可以做到这一点 将应用程序上下文自动连接到Springbean中,并使用appContext.getBeansOfType 钩住后处理器并通过 if(类型的bean实例) 我觉得挂上后处理器只是为了处理一种类型的b
有人能提出更好的方法来解决我的用例吗?(给定类型的getBean)Spring对
列表
自动连接参数有特殊处理。如果您指定一个bean,例如:
@Component
class MyBean {
@Autowired
MyBean(List<MyType> listOfMytype) {
}
}
@组件
类MyBean{
@自动连线
MyBean(类型列表){
}
}
然后spring将不会在applicationContext中搜索类型为
List
的bean,而是搜索实现MyType
的所有bean,并将它们作为列表注入()。因此,您可以获得给定类型的所有bean。谢谢您的回答。我还有一个问题。在这种情况下使用applicationContext.getBeansOfType有什么错误?我们没有将代码耦合到具体的类。我们正在将它耦合到一个抽象类(或者可能是一个接口),我们正在通过自动连接该类型bean的列表来实现这一点。@yaswanth:我认为这更适合您所链接的问题。令我惊讶的是,这个问题的现有答案中没有一个能直接说明效果的例子。所以我加了一个: