Spring是一个轻量级控制反转IoC和面向切面AOP的容器框架,它主要是为了解决企业应用开发的复杂性而诞生的。
Spring框架的主要优势之一,是其分层结构,分层结构允许使用者选择使用组件,同时为J2EE应用开发提供基本的框架。基本思想是使用基本的JavaBean代替EJB,可以用在任何Java应用中。
Spring优势:
1.低侵入式设计,代码污染极低
2.一次编写,处处运行
3.DI有效降低了耦合度
4.AOP提供了通用任务的集中管理
5.ORM和DAO简化了对数据库的访问
6.高度开放性,并不强制
Spring的特点:
方便解耦,简化开发
AOP编程的支持
声明式事务的支持
方便程序的测试
方便集成各种优秀框架
降低了JavaEE API的使用难度
Spring IOC(Inversion of Control,控制反转):
是Spring的核心,贯穿始终,所谓IOC对于Spring框架来说,就是由Spring来负责控制对象的生命周期和对象间的关系:
传统的开发模式:对象之间互相依赖
IOC:IOC容器安排对象之间的依赖,Spring会登记所有的类及其特性,等到恰当的时候,会向一个类提供所需要的类,所有的类创建,生存,销毁,都由Spring控制。
(齿轮中的耦合关系类似于软件系统中的耦合关系,耦合度过高会导致牵一发而动全身,降低耦合度是软件工程的追求之一)
图一:面向对象程序设计
图二:IOC解耦原理,把复杂系统分解为相互封装的对象,借助于第三方IOC容器,来对依赖关系的对象来进行解耦
图三:理想的软件系统,ABCD之间没有耦合关系
注意起名为控制反转的原因:在图一中,如果对象A需要使用对象B,回去生成或者引用一个对象B,无论怎样获得对象B,控制权最终都由自己主动掌握,但是在图二中,如果对象A运行到需要对象B,则有IOC容器会主动创建对象B,注入到对象A需要的地方,对象A获得对象B的过程,由主动行为变为被动行为。
我们可以将A看成是主机,B看成是USB接口外接设备,无论外接设备是什么,A都会从USB接口被动地读取数据,设备B究竟是什么取决于人,这就是一个控制反转(依赖注入)的例子。
IOC的另外的名字叫做依赖注入(Dependency Injection),所谓的依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象中。所以,依赖注入和控制反转是从不同的角度描述同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现容器之间的解耦。IOC容器就是一个对象制造工厂。
IOC通俗理解:
IOC控制反转:创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在XML文件控制,侧重于原理。
DI依赖注入:说的是创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。
AOP专门用于处理系统中分布于各个模块中的交叉关注点的问题,在JavaEE应用中,常常通过AOP来处理一些具有横切性质的系统及服务,如事务管理,安全检查,缓存,对象池管理等,AOP已经成为一种常用解决方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。