我正在开发一个具有多个spring配置java类的项目 . 其中许多都有来自其他配置类的bean自动装入,然后注入其他bean的构造函数中 .
为了使其尽可能灵活,我一直使用spring配置文件来定义在多个可用的情况下要使用的接口实现 .
这工作正常,但我想知道你是否有任何方式可以定义一个默认的bean?
例如:如果在类路径中找不到类型为Foo的bean,则注入实现Bar . 否则,请忽略Bar .
我已经看过这个问题了:Spring 3: Inject Default Bean Unless Another Bean Present,如果你知道所有bean的名字,那么用Java配置显示的解决方案可以正常工作,但在我的情况下,我不知道bean被调用了什么 .
有人知道这可以实现吗?
1 回答
将默认值定义为默认值,只需确保bean的名称相同,配置文件中的名称将覆盖默认值 .
此构造也适用于基于Java的配置 .
使用基于java的配置时,您还可以指定默认值,并在另一个配置中添加该类型的另一个bean,并使用
@Primary
进行注释 . 找到多个实例时,应使用@Primary
的实例 .