Spring 专题
专题目录
您的位置:java > Spring专题 > Spring自动装配@Qualifier实例
Spring自动装配@Qualifier实例
作者:--    发布时间:2019-11-20
在spring中,@qualifier的意思是,bean有资格自动装配上到一个字段。请参见以下情形:

自动装配示例

参见下面的例子,它会自动装配“person” bean 到 customer 的 person 属性。
package com.h3.common;

import org.springframework.beans.factory.annotation.autowired;
import org.springframework.beans.factory.annotation.qualifier;

public class customer {

	@autowired
	private person person;
	//...
}
但是,两个类似的 bean “com.h3.common.person” 在 bean 配置文件中声明。spring会知道哪个person bean应当自动装配?
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
	xsi:schemalocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean 
class ="org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor"/>
	
	<bean id="customer" class="com.h3.common.customer" />
		
	<bean id="persona" class="com.h3.common.person" >
		<property name="name" value="h3a" />
	</bean>
	
	<bean id="personb" class="com.h3.common.person" >
		<property name="name" value="h3b" />
	</bean>

</beans>
当你运行上面的例子,它产生以下异常:
caused by: org.springframework.beans.factory.nosuchbeandefinitionexception: 
	no unique bean of type [com.h3.common.person] is defined: 
		expected single matching bean but found 2: [persona, personb]

@qualifier示例

要解决上述问题,需要使用 @quanlifier 告诉spring哪些bean应当自动装配。
package com.h3.common;

import org.springframework.beans.factory.annotation.autowired;
import org.springframework.beans.factory.annotation.qualifier;

public class customer {

	@autowired
	@qualifier("persona")
	private person person;
	//...
}
在这种情况下,bean “persona” 会被自动装配。
	
	
customer [person=person [name=h3a], type=1, action=buy]

下载代码  – http://pan.baidu.com/s/1bnmjh8r

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册