Bean注入的兩種方式

Bean注入的方式 (一)一種是在XML中配置,此時分別有屬性注入、構造函數注入和工廠方法注入;java

                        (二) 另外一種則是使用註解的方式注入 @Autowired,@Resource,@Required。函數

(一)ui

【實體類】注:在配置xml過程當中不一樣的注入方式須要配置不一樣的空間,標籤好比aopthis

public class Person {  
 private String name;  
 private String sex;  
 private Date birthday;  
   

 public void Person(String name,String sex,Data birthday)
 {
   this.name = name;
   this.sex = sex;
   this.birthday = birthday;
 }

 public Date getBirthday() {  
  return birthday;  
 }  
 public void setBirthday(Date birthday) {  
  this.birthday = birthday;  
 }  
 public String getName() {  
  return name;  
 }  
 public void setName(String name) {  
  this.name = name;  
 }  
 public String getSex() {  
  return sex;  
 }  
 public void setSex(String sex) {  
  this.sex = sex;  
 }  
   
 public String toString(){  
  return "name: " + name + "/nsex: " + sex + "/nbirthday: " + birthday.toLocaleString();  
 }

(1)屬性注入spa

屬性注入即經過setXxx()方法注入Bean的屬性值或依賴對象,因爲屬性注入方式具備可選擇性和靈活性高的優勢,所以屬性注入是實際應用中最常採用的注入方式。屬性注入要求Bean提供一個默認的構造函數,併爲須要注入的屬性提供對應的Setter方法。Spring先調用Bean的默認構造函數實例化Bean對象,而後經過反射的方式調用Setter方法注入屬性值。.net

【xml】code

<bean id="dt" class="java.util.Date"></bean>  
<bean id="person" class="model.Person">  
   <property name="name" value="sunxing007" />  
   <property name="sex" value="M" />  
   <property name="birthday" ref="dt" />  
</bean> 

//ref的意思就是參考到另外一個bean.

(2)構造函數注入xml

 使用構造函數注入的前提是Bean必須提供帶參數的構造函數對象

【xml】注:須要注意的是, 你給出的構造參數順序要與構造函數一致.由於構造函數能夠由多個blog

<bean id="dt" class="java.util.Date"></bean>  
<bean id="person" class="model.Person">  
    <constructor-arg index="0" value="000002" />  
    <constructor-arg index="1" value="M" />  
    <constructor-arg index="2" ref="dt" />  
</bean>

(3)工廠方法注入

若是咱們爲Person 提供一個工廠專門生產Person,一個方法能夠是靜態/動態的PersonFactory

【工廠方法PersonFactory工廠】

public class PersonFactory {  
 //動態
 public Person createJavaBook(){  
  //一個Date對象
  Date da = new Date();

  Person pon = new Person();  
  pon .setName("001");  
  pon .setSex("M");  
  pon .setBirthday(da);   
  return pon;  
 }  

 //靜態 
 public static Person createPerson(){
  //一個Date對象
  Date da = new Date();
  return new Book("name1","M",da);  
 }  

}

【xml】

<bean id="Factory" class="model.factory.PersonFactory"></bean> 
<bean id="myPerson" factory-bean="Factory" factory-method="createJavaPerson"></bean>

(二)註解的方式注入 @Autowired,@Resource,@Required

  連接《http://www.javashuo.com/article/p-ghspkldo-ku.html

相關文章
相關標籤/搜索