Spring面向切面编程
一、AOP 的作用及其优势
作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强
优势:减少重复代码,提高开发效率,并且便于维护
二、AOP 的底层实现
实际上,AOP 的底层是通过 Spring 提供的的动态代理技术实现的。在运行期间,Spring通过动态代理技术动态
的生成代理对象,代理对象方法执行时进行增强功能的介入,在去调用目标对象的方法,从而完成功能的增强。
三、AOP 的动态代理技术
常用的动态代理技术
1.JDK 代理 : 基于接口的动态代理技术
2. cglib 代理:基于父类的动态代理技术
四、基于 XML 的 AOP 开发
1.导入坐标
org.springframework spring-context 5.0.5.RELEASE org.aspectj aspectjweaver 1.8.13
基础配置
五、XML 配置 AOP 详解
表达式语法: execution([修饰符] 返回值类型 包名.类名.方法名(参数))
访问修饰符可以省略
返回值类型、包名、类名、方法名可以使用星号* 代表任意
包名与类名之间一个点 . 代表当前包下的类,两个点 .. 表示当前包及其子包下的类
参数列表可以使用两个点 .. 表示任意个数,任意类型的参数列表
常用:execution(* com.finnlee.aop.*.*(..))
六、通知类型
前置通知
后置通知
环绕通知
用于配置环绕通知。指定增强的方法在切入点方法之前和之后都
执行
异常抛出通知
最终通知
配置文件中: @EnableAspectJAutoProxy(proxyTargetClass = true)