Spring-configuration:我创建了2个bean,引用了同一个类但不同的数据库会话。
<bean id="abc1" class="abc">
<bean id="abc2" class="abc">
现在有没有办法将id为“abc1”的bean设置为自动装配的默认bean,并在明确提到时使用abc2进行自动装配:
@Autowiring
@Qualifier("abc2")
private abc obj;
解决方案:
<bean id="abc1" class="abc" primary="true">
使abc1默认为自动装配。
用于创建abc2的实例,我们可以使用:
@Autowired
@Qualifier("abc2")
private abc obj;
答案 0 :(得分:3)
xml的@primary
注释或primary
属性完全用于此目的。这是相同的细节。这里有很好的记录。
因此,如果您提及<bean id="abc1" class="abc" primary="true"/>
,它将优先于abc2
,您可以@Qualifier
使用abc2
,只要您需要。希望这会有所帮助。
答案 1 :(得分:0)
如果跳过@Qualifier
注释,则Spring将查找与private
成员同名的bean。例如:
@Autowired
private abc abc1; //Spring will search for a bean with id="abc1"
这是您可以使用abc1
作为默认值。
如果你不想让Spring搜索特定的bean,那么你可以触发@Qualifier
,然后Spring不会关心如何调用该成员,而是会指定它的值来引用bean在id
注释中指出的@Qualifier
相同:
@Autowired
@Qualifier("abc2")
private abc theNameDoesNotMatter;