在Spring中,支持 5 自動裝配模式。
no – 缺省情況下,自動配置是通過“ref”屬性手動設定,在項目中最常用
byName – 根據屬性名稱自動裝配。如果一個bean的名稱和其他bean屬性的名稱是一樣的,將會自裝配它。
byType – 按數據類型自動裝配。如果一個bean的數據類型是用其它bean屬性的數據類型,兼容並自動裝配它。
constructor – 在構造函數參數的byType方式。
autodetect – 如果找到默認的構造函數,使用“自動裝配用構造”; 否則,使用“按類型自動裝配”。
示例
1、Auto-Wiring "no"’這是默認的模式,需要通過 "ref" 屬性來連接 bean。
package org.spring.autowring; public class Person { public Person(Ability ability){ super(); this.ability=ability; } private Ability ability; public Ability getAbility() { return ability; } public void setAbility(Ability ability) { this.ability = ability; } @Override public String toString(){ return "Person=[ablity=[skill="+this.ability.getSkill()+"]]"; } }
package org.spring.autowring; public class Ability { private String skill; public String getSkill() { return skill; } public void setSkill(String skill) { this.skill = skill; } }
1 <!-- no – 缺省情況下,自動配置是通過“ref”屬性手動設定 --> 2 <bean id="person" class="org.spring.autowring.Person"> 3 <property name="ability" ref="ability"></property> 4 </bean> 5 <bean id="ability" class="org.spring.autowring.Ability"> 6 <property name="skill" value="Java Programming"></property> 7 </bean>
2、Auto-Wiring "byName" 按屬性名稱自動裝配
<!-- Auto-Wiring "byName" 按屬性名稱自動裝配 --> <bean id="person" class="org.spring.autowring.Person" autowire="byName"/> <bean id="ability" class="org.spring.autowring.Ability">
<property name="skill" value="Java Programming"></property>
</bean>
3、Auto-Wiring "byType" 按屬性名稱自動裝配
<!-- Auto-Wiring "byType" 按屬性名稱自動裝配 --> <bean id="person" class="org.spring.autowring.Person" autowire="byType"/> <bean id="ability" class="org.spring.autowring.Ability"> <property name="skill" value="Java Programming"></property> </bean>
4、constructor – 在構造函數參數的byType方式
<!-- constructor – 在構造函數參數的byType方式。 --> <!-- 構造方法的參數 --> <bean id="person" class="org.spring.autowring.Person"> <constructor-arg> <ref bean="ability"></ref> </constructor-arg> </bean> <bean id="ability" class="org.spring.autowring.Ability"> <property name="skill" value="Java Programming"></property> </bean>