-
Spring容器
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
为什么要使用spring的框架进行开发?这个问题当然要从spring容器的特性开始回答。spring最经典的两个特性即:控制反转(IOC)和面向切面编程(AOP)。它使得传统的程序设计更加灵活,各个模块间的耦合度也更低。
-
IOC
我们可以从三张图中清楚的看到spring容器IOC的作用,在没有容器的情况下,软件系统的各个组件之间的构成是这样的
![](https://img.haomeiwen.com/i11383162/730c900fa743e648.png)
![](https://img.haomeiwen.com/i11383162/41681ae5d72f8b26.png)
由于引进了中间位置的“第三方”,也就是IOC容器,使得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了,全部对象的控制权全部上缴给“第三方”IOC容器,所以,IOC容器成了整个系统的关键核心,它起到了一种类似“粘合剂”的作用,把系统中的所有对象粘合在一起发挥作用,如果没有这个“粘合剂”,对象与对象之间会彼此失去联系,这就是有人把IOC容器比喻成“粘合剂”的由来。拿掉IOC容器之后的情况:
![](https://img.haomeiwen.com/i11383162/22e031e5509b022a.png)
通过前后的对比,我们不难看出来:对象A获得依赖对象B的过程,由主动行为变为了被动行为,控制权颠倒过来了,这就是“控制反转”这个名称的由来。
-
AOP(Aspect-Oriented Programming)
AOP即面向方面的编程,是面向对象编程(OOP)的一种补充技术。 面向对象将应用程序分解成各个层次的对象,而AOP将程序分解成各个方面或者说关注点 。这使得可以模块化诸如事务管理等这些横切多个对象的关注点。
-
AOP基本概念
-
方面(Aspect)
一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的 Advisor或拦截器实现。 -
连接点(Joinpoint)
程序执行过程中明确的点,如方法的调用或特定的异常被抛出。 -
通知(Advice)
在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架 包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器链。 -
切入点(PointCut)
指定一个通知将被引发的一系列连接点 的集合。AOP框架必须允许开发者指定切入点:例如,使用正则表达式。 -
引入(Introduction)
添加方法或字段到被通知的类。 Spring允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入使任何对象实现 IsModified接口,来简化缓存。 -
目标对象(Target Object)
包含连接点的对象。也被称作被通知或被代理对象。 -
AOP代理(AOP Proxy)
AOP框架创建的对象,包含通知。 在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。 -
织入(WeaVing)
组装方面来创建一个被通知对象。这可以在编译时 完成(例如使用AspectJ编译器),也可以在运行时完成。Spring和其他纯Java AOP框架一样, 在运行时完成织入。
Spring AOP 是Spring 框架的重要组成部分,它实现了AOP联盟约定的接口。Spring AOP 是由纯Java开发完成的。Spring AOP 只实现了方法级别的连接点,在J2EE应用中,AOP拦截到方法级的操作已经足够。OOP倡导的是基于setter/getter 的方法访问,而非直接访问域,而Spring 有足够理由仅仅提供方法级的连接点。为了使控制反转(IoC)很方便的使用到非常健壮、灵活的企业服务,则需要Spring AOP 的实现。Spring AOP 在运行时才创建Advice 对象。Spring AOP的优点如下:
-
允许开发者使用声明式企业服务,比如事务服务、安全性服务。
-
开发者可以开发满足业务需求的自定义方面。
-
开发Spring AOP Advice 很方便,可以借助代理类快速搭建Spring AOP 应用。
网友评论