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)