AOP
本质:在不改变原有业务逻辑的情况下增强横切逻辑,横切逻辑代码往往是权限校验代码、⽇志代
码、事务控制代码、性能监控代码。
第1节 AOP 相关术语
1.1
业务主线
在讲解
AOP
术语之前,我们先来看⼀下下⾯这两张图,它们就是第三部分案例需求的扩展(针对这些扩
展的需求,我们只进⾏分析,在此基础上去进⼀步回顾
AOP
,不进⾏实现)
上图描述的就是未采⽤AOP思想设计的程序,当我们红⾊框中圈定的⽅法时,会带来⼤量的重复劳动。
程序中充斥着⼤量的重复代码,使我们程序的独⽴性很差。⽽下图中是采⽤了
AOP
思想设计的程序,它
把红框部分的代码抽取出来的同时,运⽤动态代理技术,在运⾏期对需要使⽤的业务逻辑⽅法进⾏增
强
1.2 AOP 术语
连接点:⽅法开始时、结束时、正常运⾏完毕时、⽅法异常时等这些特殊的时机点,我们称之为连接 点,
项⽬中每个⽅法都有连接点,连接点是⼀种候选点
切⼊点:指定
AOP
思想想要影响的具体⽅法是哪些,描述感兴趣的⽅法
Advice
增强:
第⼀个层次:指的是横切逻辑
第⼆个层次:⽅位点(在某⼀些连接点上加⼊横切逻辑,那么这些连接点就叫做⽅位点,描述的是具体
的特殊时机)
Aspect
切⾯:切⾯概念是对上述概念的⼀个综合
Aspect
切⾯
=
切⼊点
+
增强
=
切⼊点(锁定⽅法)
+
⽅位点(锁定⽅法中的特殊时机)
+
横切逻辑
众多的概念,⽬的就是为了锁定要在哪个地⽅插⼊什么横切逻辑代
第2节 Spring中AOP的代理选择
Spring
实现
AOP
思想使⽤的是动态代理技术
默认情况下,
Spring
会根据被代理对象是否实现接⼝来选择使⽤
JDK
还是
CGLIB
。当被代理对象没有实现
任何接⼝时,
Spring
会选择
CGLIB
。当被代理对象实现了接⼝,
Spring
会选择
JDK
官⽅的代理技术,不过
我们可以通过配置的⽅式,让
Spring
强制使⽤
CGLIB
。
第3节 Spring中AOP的配置⽅式
在
Spring
的
AOP
配置中,也和
IoC
配置⼀样,⽀持
3
类配置⽅式。
第⼀类:使⽤
XML
配置
第⼆类:使⽤
XML+
注解组合配置
第三类:使⽤纯注解配置