读书人

【第三章】 DI 之 3.1 DI的配置使用

发布时间: 2012-07-04 19:33:55 作者: rapoo

【第三章】 DI 之 3.1 DI的配置使用 ——跟我学spring3

3.1.1? 依赖和依赖注入

?????? 传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系:

? ? ?泛化:表示类与类之间的继承关系、接口与接口之间的继承关系;

? ? ?实现:表示类对接口的实现;

? ? ?依赖:当类与类之间有使用关系时就属于依赖关系,不同于关联关系,依赖不具有“拥有关系”,而是一种“相识关系”,只在某个特定地方(比如某个方法体内)才有关系。

? ? ?关联:表示类与类或类与接口之间的依赖关系,表现为“拥有关系”;具体到代码可以用实例变量来表示;

? ? ?聚合:属于是关联的特殊情况,体现部分-整体关系,是一种弱拥有关系;整体和部分可以有不一样的生命周期;是一种弱关联;

? ? ?组合:属于是关联的特殊情况,也体现了体现部分-整体关系,是一种强“拥有关系”;整体与部分有相同的生命周期,是一种强关联;

Spring IoC容器的依赖有两层含义:Bean依赖容器容器注入Bean的依赖资源

? ? ?Bean依赖容器:也就是说Bean要依赖于容器,这里的依赖是指容器负责创建Bean并管理Bean的生命周期,正是由于由容器来控制创建Bean并注入依赖,也就是控制权被反转了,这也正是IoC名字的由来,此处的有依赖是指Bean和容器之间的依赖关系

? ? ?容器注入Bean的依赖资源:容器负责注入Bean的依赖资源,依赖资源可以是Bean、外部文件、常量数据等,在Java中都反映为对象,并且由容器负责组装Bean之间的依赖关系,此处的依赖是指Bean之间的依赖关系可以认为是传统类与类之间的“关联”、“聚合”、“组合”关系

?

为什么要应用依赖注入,应用依赖注入能给我们带来哪些好处呢?

? ? ?动态替换Bean依赖对象,程序更灵活:替换Bean依赖对象,无需修改源文件:应用依赖注入后,由于可以采用配置文件方式实现,从而能随时动态的替换Bean的依赖对象,无需修改java源文件;

? ? ?更好实践面向接口编程,代码更清晰:在Bean中只需指定依赖对象的接口,接口定义依赖对象完成的功能,通过容器注入依赖实现;

? ? ?更好实践优先使用对象组合,而不是类继承:因为IoC容器采用注入依赖,也就是组合对象,从而更好的实践对象组合。

读书人网 >软件架构设计

热点推荐