《Spring从入门到精通》学习之---bean的自动装配的5种模式

spring中,自动装配可以指定给每一个单独的bean,因此可以给一些bean使用自动装配而一些bean不使用自动装配。

有5种模式 byName,byType,constructor,autodetect,no

 

1.byName模式

该模式就是通过bean的属性名字进行自动装配。在Spring配置文档xml中,查找一个与将要装配的属性同样名字的bean。

代码

 <bean id="helloWorld" class="jp.co.xiehl.learn.ch2.action.HelloWorld" autowire="byName">
   <property name="msg">
     <value>HelloWorld</value>
   </property>
 </bean>
 
 <bean id="date" class="java.util.Date"></bean>

 

HelloWorld.java

 

......

......

private Date date;--->根据这个属性名字去xml找相同名字的bean来装配该属性。如找不到则不装配,不报异常。

执行结果:

2010/04/28 16:05:12 org.apache.catalina.startup.Catalina start
情報: Server startup in 12719 ms
Helloworld:[date]=null ---> 没有匹配的情况的结果

 

2.byType

该模式就是指如果xml中正好有一个与属性类型一样的bean,就自动装配这个属性。如果有多余一个这样的bean,就抛出异常。

在xml文档中id为helloworld的bean被设置成byType装配。HelloWorld.java中包含一个Date类型的变量,spring就会查找一个类型为Date的bean的定义,然后用它来设置该属性。

示例代码

 

 

HelloWorld.java

 

......

......

private Date date; --->如没有匹配的bean,则什么都不会发生,属性不会被设置。如果不想要该结果,则可通过设置dependency-check="objects"来指定在这种情况下抛出异常。

xml

 <bean id="helloWorld" class="jp.co.xiehl.learn.ch2.action.HelloWorld" autowire="byType" dependency-check="objects">
   <property name="msg">
     <value>HelloWorld</value>
   </property>
 </bean>

 

3.constructor模式

根据构造函数指定的参数进行装配。

 

4.autodetect模式

指的是通过对bean检查类的内部来选择constructor或byType。如没有constructor,而找到byType,就用byType。

 

5.no模式

不使用自动装配。必须通过ref来实现bean的引用。这是默认模式。不推荐使用自动装配。因为bean之间的参考依赖关系不清晰。

 

 

 

5种模式总结

显示的指定依赖,如property和constructor-arg总会自动覆盖自动装配。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值