@Qualifier
注解意味着可以在被标注
bean
的字段上可以自动装配。
Qualifier注解可以用来取消Spring不能取消的bean应用。
下面的示例将会在Customer的person属性中自动装配person的值。
1
2
3
4
5
|
public
class
Customer
{
@Autowired
private
Person person;
}
|
下面我们要在配置文件中来配置Person类。
1
2
3
4
5
6
7
8
9
|
<
bean
id
=
"customer"
class
=
"com.howtodoinjava.common.Customer"
/>
<
bean
id
=
"personA"
class
=
"com.howtodoinjava.common.Person"
>
<
property
name
=
"name"
value
=
"lokesh"
/>
</
bean
>
<
bean
id
=
"personB"
class
=
"com.howtodoinjava.common.Person"
>
<
property
name
=
"name"
value
=
"alex"
/>
</
bean
>
|
Spring
会知道要自动装配哪个person bean么?不会的,但是运行上面的示例时,
会抛出下面的异常:
1
2
3
|
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No unique bean of
type
[com.howtodoinjava.common.Person] is defined:
expected single matching bean but found 2: [personA, personB]
|
要解决上面的问题,需要使用 @Quanlifier
注解来告诉Spring容器要装配哪个bean:
1
2
3
4
5
6
|
public
class
Customer
{
@Autowired
@Qualifier
(
"personA"
)
private
Person person;
}
|