spring的自动装配

Spring的自动装配就是将一个bean注入到其它bean的property中去。
除了ref引用方式,Spring有如下四种自动装配方式:
Auto-Wiring byName

Auto-Wiring byType

Auto-Wiring constructor

Auto-Wiring autodetect

sister.java如下:

package com.sureSand;

public class Sisiter 
{
private Girl girl;

public Sister(Girl girl) {
    this.girl = girl;
}

public void setSisiter(Girl girl) {
    this.girl = girl;
}
//...

}

girl.java如下:

package com.sureSand;

public class Girl 
{
    //...
}

1.我们先看一下正常的“ref”方式来装配bean:

<bean id="sister" class="com.sureSand.Sister">
    <property name="girl" ref="girl" />
</bean>
 <bean id="girl" class="com.sureSand.Girl" />

这种装配方式很容易看的出来将bean girl装配到bean sister中。
2.Auto-Wiring byName’

<bean id="sister" class="com.sureSand.Sister" autowire="byName" />
<bean id="girl" class="com.sureSand.Girl" />

根据属性property的名字来装配bean,因为bean sister的的property name与bean girl中的id相同,spring会自动装配bean girl到bean sister中的property中去。
3.Auto-Wiring byT

根据属性property的数据类型来装配bena,bean sister中property数据类型和bean girl中的id数据类型相同,spring会自动装配bean girl到bean sister中的property中去。
但是一旦有两种及以上相同数据类型的bean girl被配置,将抛出UnsatisfiedDependcyException异常。
所以,一旦选择了’byType’类型的自动装配,请确认你的配置文件中每个数据类型定义一个唯一的bean。
4.Auto-Wiring ‘constructor’

<bean id="sister" class="com.sureSand.Sister" autowire="constructor" />
<bean id="girl" class="com.sureSand.Girl" />

这种情况下,Spring会寻找与参数数据类型相同的bean,通过构造函数public Customer(Person person)将其注入。5.Auto-Wiring ‘autodetect’

<bean id="sister" class="com.sureSand.Sister" autowire="autodetect" />

<bean id="girl" class="com.sureSand.Girl" />

这种情况下,Spring会先寻找Customer中是否有默认的构造函数,如果有相当于上边的’constructor’这种情况,用构造函数注入,否则,用’byType’这种方式注入,所以,此例中通过调用public Customer(Person person)将其注入。

大家可以明显感觉到自动装配的开发速度比手动快,但是在维护或者别人来查看代码时常常要找这个bean被装配到了哪里,不是很直观,甚至不知道哪一个bean注入到哪一个bean里,请根据实际情况选择装配方式。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值