Spring 配置:2 个具有相同 class 引用的 beans
Spring Configuration: 2 beans with same class reference
Spring-配置:我已经创建了 2 个 bean,参考了相同的 class 但不同的数据库会话。
<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;
如果您跳过 @Qualifier
注释,那么 Spring 将查找与 private
成员同名的 bean。例如:
@Autowired
private abc abc1; //Spring will search for a bean with id="abc1"
这是您可以使用 abc1
作为 默认值 的值。
如果你不想让Spring搜索特定的bean,那么你可以触发@Qualifier
然后Spring就不会关心成员是如何被调用的,但会分配它的值来引用 @Qualifier
注释中指出的具有相同 id
的 bean:
@Autowired
@Qualifier("abc2")
private abc theNameDoesNotMatter;
xml 的 @primary
注释或 primary
属性正是用于此目的。这是相同的详细信息。这里有很好的记录。
因此,如果您提到 <bean id="abc1" class="abc" primary="true"/>
,它将优先于 abc2
,并且您可以在任何需要的地方使用 @Qualifier
代替 abc2
。希望这会有所帮助。
Spring-配置:我已经创建了 2 个 bean,参考了相同的 class 但不同的数据库会话。
<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;
如果您跳过 @Qualifier
注释,那么 Spring 将查找与 private
成员同名的 bean。例如:
@Autowired
private abc abc1; //Spring will search for a bean with id="abc1"
这是您可以使用 abc1
作为 默认值 的值。
如果你不想让Spring搜索特定的bean,那么你可以触发@Qualifier
然后Spring就不会关心成员是如何被调用的,但会分配它的值来引用 @Qualifier
注释中指出的具有相同 id
的 bean:
@Autowired
@Qualifier("abc2")
private abc theNameDoesNotMatter;
xml 的 @primary
注释或 primary
属性正是用于此目的。这是相同的详细信息。这里有很好的记录。
因此,如果您提到 <bean id="abc1" class="abc" primary="true"/>
,它将优先于 abc2
,并且您可以在任何需要的地方使用 @Qualifier
代替 abc2
。希望这会有所帮助。