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