【问题标题】:Spring Configuration: 2 beans with same class referenceSpring 配置:2 个具有相同类引用的 bean
【发布时间】:2015-02-25 10:59:16
【问题描述】:

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;

【问题讨论】:

  • 你能接受它的工作吗?

标签: java spring spring-mvc annotations autowired


【解决方案1】:

xml 的@primary 注释或primary 属性正是用于此目的。这是相同的细节。这里有很好的记录。

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html

因此,如果您提及&lt;bean id="abc1" class="abc" primary="true"/&gt;,它将优先于abc2,您可以在任何需要的地方使用@Qualifier 代替abc2。希望这会有所帮助。

【讨论】:

  • 不错的一个。我不知道这个:)
【解决方案2】:

如果您跳过@Qualifier 注释,那么Spring 将查找与private 成员同名的bean。例如:

@Autowired
private abc abc1; //Spring will search for a bean with id="abc1"

这是您可以使用abc1 作为默认 值。

如果您不想让 Spring 搜索特定的 bean,那么您可以触发 @Qualifier,然后 Spring 将不关心该成员是如何被调用的,而是分配它的值来引用具有@Qualifier 注解中指出的同一个id

@Autowired
@Qualifier("abc2")
private abc theNameDoesNotMatter;

【讨论】:

  • 我猜他正在寻找@primary 注释或类似的注释。我希望我的回答能提供他想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-05
  • 2014-05-07
  • 2021-12-17
  • 2021-04-27
  • 2023-04-01
  • 2021-07-18
  • 1970-01-01
相关资源
最近更新 更多