1. 程式人生 > >Spring 註解注入—@Qualifier 註釋

Spring 註解注入—@Qualifier 註釋

當建立多個具有相同型別的 bean 時,並且想要用一個屬性只為它們其中的一個進行裝配,在這種情況下,你可以使用 @Qualifier 註釋和 @Autowired 註釋通過指定哪一個真正的 bean 將會被裝配來消除混亂。下面顯示的是使用 @Qualifier 註釋的一個示例。

 

1.這裡是 Student.java 檔案的內容:

 1 package com.spring.chapter7;
 2 
 3 public class Student {
 4     public String getName() {
 5         return name;
 6     }
 7     public void setName(String name) {
 8         this.name = name;
 9     }
10     public int getAge() {
11         return age;
12     }
13     public void setAge(int age) {
14         this.age = age;
15     }
16     private String name;
17     private int age;
18     
19 
20 
21 }

 

2.這裡是 Profile.java 檔案的內容:

 1 package com.spring.chapter7;
 2 
 3 import java.util.List;
 4 import java.util.Set;
 5 
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.beans.factory.annotation.Qualifier;
 8 import org.springframework.beans.factory.annotation.Required;
 9 
10 
11 
12 public class Profile {
13     
14     @Autowired
15     @Qualifier("Student")    //這裡的值就是bean的id,當我們改變此值跟隨我們指定的bean進行注入
16     private Student student;
17     
18     public void printName() {
19         System.out.println("age:"+student.getName());
20     }    
21     
22     public void printAge() {
23         System.out.println("name:"+student.getAge());
24     }
25 
26     public Profile() {
27         System.out.println("--------構造方法------------");
28     }
29 }

 

3.下面是 MainApp.java 檔案的內容:

 1 package com.spring.chapter7;
 2 
 3 
 4 import java.util.List;
 5 
 6 import org.springframework.context.ApplicationContext;
 7 import org.springframework.context.support.AbstractApplicationContext;
 8 import org.springframework.context.support.ClassPathXmlApplicationContext;
 9 
10 public class Main {
11     /**
12      * Spring @Qualifier  註解注入
13      * author:
14      * mail:[email protected]
15      * 時間:
16      */
17 
18     public static void main(String[] args) {
19         ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring_xml/spring.xml");
20         Profile profile=(Profile)applicationContext.getBean("Profile");
21         profile.printName();
22         profile.printAge();
23         
24         
25     }
26 
27 }

4.下面配置檔案 spring.xml 的示例:

 1     <!-- @Qualifier 註解 -->
 2     <bean id="Profile" class="com.spring.chapter7.Profile">
 3     </bean>
 4     <bean id="Student" class="com.spring.chapter7.Student">
 5         <property name="name" value="張三"></property>
 6         <property name="age" value="23"></property>
 7     </bean>
 8     
 9     <bean id="Student2" class="com.spring.chapter7.Student">
10         <property name="name" value="李四"></property>
11         <property name="age" value="22"></property>
12     </bean>

 

執行結果:

--------構造方法------------
age:張三
nam