<bean id="customer" class="com.tw511.common.Customer" autowire="byName" />
package com.tw511.common; public class Customer { private Person person; public Customer(Person person) { this.person = person; } public void setPerson(Person person) { this.person = person; } //... }
package com.tw511.common; public class Person { //... }
<bean id="customer" class="com.tw511.common.Customer"> <property name="person" ref="person" /> </bean> <bean id="person" class="com.tw511.common.Person" />
按屬性名稱自動裝配。在這種情況下,由於對「person」 bean的名稱是相同於「customer」 bean 的屬性(「person」)名稱,所以,Spring會自動通過setter方法將其裝配 – 「setPerson(Person person)「.
<bean id="customer" class="com.tw511.common.Customer" autowire="byName" /> <bean id="person" class="com.tw511.common.Person" />
檢視完整的範例 – Spring按名稱自動裝配
通過按屬性的資料型別自動裝配Bean。在這種情況下,由於「Person」 bean中的資料型別是與「customer」 bean的屬性(Person物件)的資料型別一樣的,所以,Spring會自動通過setter方法將其自動裝配。– 「setPerson(Person person)「.
<bean id="customer" class="com.tw511.common.Customer" autowire="byType" /> <bean id="person" class="com.tw511.common.Person" />
檢視完整的範例 – Spring通過型別自動裝配
通過建構函式引數的資料型別按屬性自動裝配Bean。在這種情況下,由於「person」 bean的資料型別與「customer」 bean的屬性(Person物件)的建構函式引數的資料型別是一樣的,所以,Spring通過構造方法自動裝配 – 「public Customer(Person person)「.
<bean id="customer" class="com.tw511.common.Customer" autowire="constructor" /> <bean id="person" class="com.tw511.common.Person" />
檢視完整的範例 – Spring按AutoDetect自動裝配成功.
<bean id="customer" class="com.tw511.common.Customer" autowire="autodetect" dependency-check="objects /> <bean id="person" class="com.tw511.common.Person" />
在實踐中,我更頃向手動關聯建立,它始終是乾淨,也很好地工作,或者使用 @Autowired 註解,這是更加靈活和建議。