Bean预选赛方法

时间:2019-12-04 09:26:27

标签: spring spring-mvc dependency-injection

Id,想问一问Qualifier注释在Bean方法上到底在做什么?我认为这与在Bean批注中指定名称相同,但是用例证明了其他情况:

配置:

@Bean
@Qualifier("myGroup")
public MyObject myObject1() {
    return new MyObject("myObject1");
}


@Bean
@Qualifier("myGroup")
public MyObject myObject2() {
    return new MyObject("myObject2");
}

@Bean
public MyObject myObject3() {
    return new MyObject("myObject3");
}

注射:

@Autowired
@Qualifier("myGroup")
private List<MyObject> myObjects;

列表myObjects将仅包含具有限定符的myObject1和myObject2。 Bean名称将由方法命名。 所以我的问题是,为什么,以及如何运作?

1 个答案:

答案 0 :(得分:1)

这有效,因为您正在自动装配MyObject的列表。将同一个类的多个bean自动装配到包含该类的列表中不是问题。我的意思是,这是不同的实例,是的,但是如果您自动装配它们的列表,那么您应该知道为什么这样做。

如果您这样做,将无法正常工作

@Autowired
@Qualifier("myGroup")
private MyObject myObjects;

因为myObject1myObject2都将被视为自动装配候选者,这将使Spring失效。而且由于您在自动装配时放置了@Qualifier,所以它只会自动装配符合@Qualifier

中指定的名称的bean。