Spring IOC 构造方法注入和设值注入的比较

rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"> rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_editdata.mso">

构造子注入的配置文件:

<bean id="orderService"
        class="com.lizjason.spring.OrderService">
        <constructor-arg index="0" ref="orderDAO"/>
    </bean>

参数说明:constructor-arg 指明是构造方法注入,index="0",表示是构造方法中的第一个参数,如果只有一个参数,则可以不用设置这个属性值

在构造方法中增加参数,在初试化的时候先执行构造方法,就会把值注入进去。

和设置注入的比较

设置注入的配置文件:

<bean id="billingService"
        class="com.lizjason.spring.BillingService">
        <property name="billingDAO"
            ref="billingDAO">
    </bean>

 

都是利用SpringIOC进行注入值不过是方法不同,构造子注入的优势:

1.     在构造期即创建一个完整、合法的对象,对于这条Java设计原则,Type2无疑是最好的响应者。

2.     避免了繁琐的setter方法的编写,所有依赖关系均在构造函数中设定,依赖关系集中呈现,更加易读。

3.     由于没有setter方法,依赖关系在构造时由容器一次性设定,因此组件在被创建之后即处相对不变的稳定状态,无需担心上层代码在调用过程中执行setter方法对组件依赖关系产生破坏,特别是对于Singleton模式的组件而言,这可能对整个系统产生重大的影响。

4.     同样,由于关联关系仅在构造函数中表达,只有组件创建者需要关心组件内部的依赖关系。对调用者而言,组件中的依赖关系处于黑盒之中。对上层屏蔽不必要的信息,也为系统的层次清晰性提供了保证。

5.     通过构造子注入,意味着我们可以在构造函数中决定依赖关系的注入顺序,对于一个大量依赖外部服务的组件而言,依赖关系的获得顺序可能非常重要,比如某个依赖关系注入的先决条件是组件的DataSource及相关资源已经被设定。

不论使用的是哪一种方式,进行注入,调用的时候都要通过getBean方法来调用。Spring会根据配置文件来决定怎样去注入。


 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值