1、aop的三个术语:通知、连接点、切点
通知定义切面何时使用、何时执行。有5种类型(Interception Around, Before, After Returning, Throw, Introduction)
连接点主要是定义时机,可以是调用方法时,抛出异常时、甚至修改一个字段
切点定义何处,有三种实现形式(静态切入点、动态切入点、自定义切入点)
切面是通知和切点的结合
2、支持的AOP类型
(1)基于代理的经典AOP
(2)@AspectJ注解驱动的切面
(3)纯POJO切面
(4)注入式AspectJ切面(适合Spring各版本)
3、切点表达式语言
AspectJ指示器 | 描述 |
arg() | 限制连接点匹配参数为指定类型的执行方法 |
@arg() | 限制连接点匹配参数为指定注解标注的执行方法 |
execution() | 用于匹配是连接点的执行方法 |
this() | 限制连接点匹配AOP代理的Bean引用为指定类型的的参数 |
target() | 限制连接点匹配目标对象为指定类型的类 |
@target() | 限制连接点匹配特定的执行对象,这些对象对应的类要具备指定类型的注解 |
within() | 限制连接点匹配指定的类型 |
@within() | 限制连接点匹配指定注解所标注的类型 |
@annotation() | 限制匹配带有指定注解连接点 |
bean() | 限制匹配bean id或bean名称的连接点 |