码迷,mamicode.com
首页 > 编程语言 > 详细

Spring IOC 注入方式

时间:2015-12-30 21:41:10      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

依赖注入通常有如下两种方式:

设值注入:IOC容器使用属性的Setter方法来注入被依赖的实例。

设值注入是指IOC容器使用属性的Setter方法来注入被依赖的实例。这种注入方式简单、直观,因而在Spring的依赖注入里大量使用。

 

构造注入:IOC容器使用构造器来注入被依赖的实例。

构造注入在构造实例时,已经为其完成了依赖关系的初始化。这种利用构造器来设置依赖关系的方式,被称之为构造注入。

Spring推荐面向接口编程,可以更好的让规范和实现分离,从而提供更好的解耦。

对于一个JAVAEE应用,不管是DAO组件,还是业务逻辑组件,都应该先定义一个接口,该接口定义组件应该实现的功能,但是功能的实现则由其实现类提供。

EX:

先定义2个接口:

 

 

两种注入方式的对比:

Spring同时支持两种依赖注入方式:设置注入和构造注入。两种注入方式,并没有绝对的好坏之分,只是适应的场景有所不同。

相比之下,设置注入具有如下优点:

1、 与传统的JavaBean的写法更相识,程序开发人员更容易理解、接受、通过setter方式设定依赖关系显得更加直观、自然。

2、 对于复杂的依赖关系,如果采用构造注入,会导致构造器过于臃肿,难以阅读。Spring在创建Bean实例时,需要同时实例化其依赖的全部实例,因而导致性能下降。而使用设置注入,则可以避免。

3、 尤其是在某些属性可选的情况下,多参数的构造器更加笨重。

 

当然,构造注入也不是绝对不如设值注入,某些特定的场合,构造更适合。构造也有如下优点:

1、 构造注入可以在构造器中决定依赖关系的注入顺序,优先依赖的优先注入,常常需要依赖于Datasource的注入。采用构造注入,可以在代码中清晰地决定注入顺序。

2、 对于依赖关系无须变化的Bean,构造注入更有用处。因为没有setter方法,所有的依赖关系全部在构造器中设定,因此,无须担心后续的代码对依赖关系产生破坏。

3、 依赖关系只能在构造器中设定,则只有组件的创建者才能改变组件的依赖关系。对组件的调用者而言,组件内部的依赖关系完全透明,更符合高内聚的原则。

建议采用以设值注入为主,构造注入为辅的注入策略。对于依赖关系无须变化的注入,尽量采用构造注入;而其他的依赖关系的注入,则考虑采用设值注入。

 

Spring IOC 注入方式

标签:

原文地址:http://www.cnblogs.com/Spirit612/p/5090017.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!