spring AOP

1.前言

AOP 提供一种通用的扩展机制,在业务操作前后提供一些切面的操作,这些操作通常是和业务无关的,例如:日志记录、性能统计、安全控制、事务处理、异常处理等。一个目标类可以被多个切面切入,多个切面也可以切入一个目标类。切面实现的本质是一个或多个基于连接点的拦截器。

Spring AOP 底层是基于动态代理实现的,对实现接口的类进行代理,默认使用 JDK 动态代理,对没实现接口的类,使用 CGLIB 动态代理。Spring AOP 中的目标类不管有没有实现接口,都可以通过配置来强制使用 CGLIB 代理方式--->>>@EnableAspectJAutoProxy(proxyTargetClass = true)

2.术语

    • Aspect(切面):切入一个或多个类的模块
    • Join point(连接点):程序执行的节点,例如执行方法或处理异常
    • Advice(通知):切面在连接点执行的动作,例如前置通知
    • Pointcut(切点):用于匹配连接点,一般通过表达式匹配
    • Target object(目标对象):被切入的对象,可以被一个或多个切面切入
    •  

3.通知类型

 

 4.AOP 使用方式

 

    • 1.XML配置
    • 2.注解形式
    • 3.Advisor代码形式

    •  

 

5.常用注解

 

 6.通知的执行顺序

1.单个切面

2.多个切面

    • 多个切面可通Order注解控制切面的整体执行顺序
    • 多个切面各个增强顺序如何?
      • 即:先执行切面order(1)的连接点执行前的增强,然后执行order(2)连接点执行前的增强,再执行order(2)连接点执行后的增强,再执行order(1)连接点执行后的增强
    •  

 

posted @ 2023-06-18 01:33  恃才傲物123  阅读(12)  评论(0编辑  收藏  举报