@Qualifier 注解和 @Autowired 注解一起使用可以指定装配的Bean是哪一个来消除混乱
使用@Qualifier 注解时,要在配置文件中添加以下代码
在 beans 中添加 xmlns:context 属性xmlns:context="http://www.springframework.org/schema/context"在 beans 的 xsi:schemaLocation 属性中添加并用空格分隔http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdbeans 内添加<context:annotation-config/>
案例代码:
Person.java
package com.baklib.custom;public class Person {private String name;private Integer age;public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
Action.java
package com.baklib.custom;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;public class Action {@Autowired@Qualifier("person1")private Person person;public void sayHello() {System.out.println("Hello, "+person.getName()+" is " + person.getAge());}}
MainApp.java
package com.baklib.custom;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");Action action = (Action) context.getBean("action");action.sayHello();}}
配置文件 Beans.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:annotation-config/><bean id="action" class="com.baklib.custom.Action"></bean><bean id="person1" class="com.baklib.custom.Person"><property name="name" value="张三" /><property name="age" value="22" /></bean><bean id="person" class="com.baklib.custom.Person"><property name="name" value="李四" /><property name="age" value="20" /></bean></beans>
编写完以上代码,就可以运行这个程序,运行结束后,可以在控制台看到下面的信息
Hello, 张三 is 22
