课程简介:
1.Spring的概况
2.Spring之IOC
3.Spring之AOP
一、Spring的概况
简介:Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架,他主要解决企业应用开发的复杂性。
好处:
可以有效组织中间层对象。
使用统一的配置文件。
促进良好的编程习惯,减少编程代价。
特点:易于单元测试。
方便解耦,简化开发。
AOP编程的支持。
声明式事务的支持。
方便集成各种优秀框架。
二、Spring之IOC
IOC(控制反转)是spring的核心,对于Spring框架来说,就是由Spring来负责控制对象的生命周期。
传统的开发模式:对象之间相互依赖
IOC开发模式:IOC容器安排对象之间的依赖
举个简单的例子,就跟找女朋友一样,传统的就是自己认识,打听其兴趣爱好,这个过程是复杂且深奥的,而IOC就是他提供一个平台,所有数据都有,你只需要去看看,找到喜欢的就行。
现在控制对象生命周期不再是某一个对象,而是spring。
传统开发模式:
IOC开发模式:
既然IOC是控制反转,那么究竟哪些方面被反转啦?
其实就是获得对象的过程被反转了,控制对象的过程从本身的管理变为由IOC容器主动的注入。
对象之间的依赖关系在spring容器在运行的时候动态注入。
IOC:实质就是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。
三、Spring之AOP
什么是AOP?
专门用于处理系统中分布于各个模块中的交叉关注点的问题,比如事务管理,安全监测,缓存,对象池管理等。
面向切面编程,通过预编译方式和运行时期动态代理实现程序功能的统一维护的一种技术。
当它执行到某一方法时,自行调用某一个方法,比如日志管理,这样就可以对程序员是透明的。
AOP的主要意图:
将日志处理,系统维护等功能划分出来,并且把这些组件分装到其他组件中。
第一种方法的缺点就是如果要修改深色部分的代码,那么就要修改三个地方,但是如果有100个地方调用了它,就要修改100个地方,这无疑是不可能的。
第二种方法是将相同的方法都抽象出来,然后在使用它的地方显式调用即可。
而我们将要采用的方法就是根据第二种方法而来,不用显式调用,而是默认调用。
AOP代理其实就是由AOP框架动态生成的一个对象,该对象可作为目标对象使用,具体实现方法如下:
程序员要做的主要任务就是:
1.定义普通业务组件
2.定义切入点,一个切入点可能会横切一个或多个组件。
3.定义增强处理,增强处理就是在业务组件中植入业务动作。
一旦定义切入点和增强处理,系统就会自动生成AOP代理。
AOP中的一些关键概念:
切面——Aspect:加入的切面类,比如日志类
连接点——Join Point:在spring中,一个连接点通常表示一个方法的执行。
通知——Advice:在连接点执行的动作。
切入点——Point Cut:匹配连接点的断言,如何在切面中陪陪连接点。
引入——Introduction:在不修改类代码的前提下,为类添加新的方法和属性
目标对象——Target Object:被一个或者多个切面所通知的对象
AOP代理——AOP proxy:其实就是AOP框架所创建的对象
AOP通俗的理解:
一个组件A,不关心其他常用服务组件B,但是当组件A使用组件B的时候,不是组件A自身去调用,而是通过配置等其他方式,比如Spring中可以通过xml配置文件。
AOP实现方式:
1.预编译方式:AspectJ
2.运行时期动态代理(JDK动态代理,CGLib动态代理):SpringAOP,JbossAOP