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