java面试题网站:www.javaoffers.com
在学习spring的AOP时候,概念性太多,不能落实,时间 一长那些感念性的东西就会忘记,有的时候还会搞不清楚,这一次本人在复习AOP的时候,就系统的来说一下Aop中的概念,并用最通俗最接近我们项目开发的语言和最简单的demo原理来表达Aop中的概念,主要做到用最简单的方法去理解Aop概念。
aop:技术上主要就是利用代理模式。spring支持jdk和cglib这两种代理技术。
aop: 设计到的概念:
#核心关注点: 就是我们在开发中所开发的纯业务代码。
#横切关注点: 就是我们在开发中所开发的非代码,比如:日志,事务,异常等等(实际项目中的公共方法,提取到某一类或某多个类中,这些公共方法统称为横切关注点)。
#连接点 : 业务中的每一个方法可以看做连接点(实际上任何一个方法(非业务性的也可以)都可以看作连接点,但是在实际项目中我们通常把业务的每一个方法看做连接点)
#切点 : “切点”属于一种定义性的,来描述多个连接点的一种定义,类似 于正则表达式原理。
#通知 : “通知”属于一种定义性的,用来描述横切关注点(公共方法提取)中的某一方法的使用策略, 一个方法可以被多个通知策略使用,通知策略包括:after,before,around,after throwing,after turning。
#切面 : "切面"属于一种定义性的 ,用于描述切点(一个或多个连接点)和通知(一个或多个 公共方法使用策略)的组合信息。
#引入 : “引入”属于一种定义性的,用于描述引入某一“增强实例类”中的功能(本质:创建代理对象时引入了“增强实例类”所实现的所有接口,这样创建的代理类就可以调用“增强实例类”中的功能了,下图中有原理代码演示)。
#织入 : “织入” 就是根据我们定义好的(切面和引入)去创建代理对象,这里分三种情况创建代理对象:1只有切面,2只有引入,3切面和引入的组合,这三种情况并只会使用其中的一种情况去创建代理对象。
看完 上面的定义如果还是不太了解请看下面的最简单原理AOP图: