在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>
时间: 2024-10-15 13:49:41