SpringAOP (二)
相关概念
Spring AOP是一种基于方法的AOP,它只能应用于方法上。
- 连接点-join point
对应的是具体被拦截的对象,因为Spring只能支持方法,所以被拦截的对象往往就是指特定的方法。
- 切点-point cut
切面不单单应用于当个方法, 也可能是多个类的不同方法,这时可以通过正则式和指示器的规则去定义从而适配连接点。
同俗点讲,就是正则式和指示器匹配的对象(方法),这些方法都是我们想要去做处理的
-
通知-advice
本质是方法,方法里做出一些默认实现,分为
前置通知(before advice)
后置通知(after advice),又称为最终通知
环绕通知(around advice)
返回通知(afterReturning advice)
异常通知(afterThrowing advice) -
目标对象-target
被代理的对象 -
引入-instroduction
引入新的类和方法,增强现有Bean的功能
-
织入-weaving
将约定的内容织入到约定流程中(将拼图放到模型图的正确位置) -
切面-aspect
定义切点、各类通知、引入的内容,Spring AOP将通过它的信息来增强Bean的功能或者将对应的方法织入流程
-Spring AOP约定流程图
表达式-正则式和指示器
- execution(修饰符 返回值类型 类的全限定名.方法名(参数) )
*–>通配符
…–>任务多个参数 - AspectJ的指示器
AspectJ指示器 | 描述 |
---|---|
args() | 限制连接点匹配参数为指定类型的执行方法 |
@args() | 限制连接点匹配参数由指定注解标注的执行方法 |
execution() | 用于匹配是连接点的执行方法 |
this() | 限制连接点匹配AOP代理的Bean引用为指定类型的类 |
target() | 限制连接点匹配目标对象为指定类型的类 |
@target() | 限制连接点匹配特定的执行对象,这些对象对应的类要具备有指定类型的注解 |
within() | 限制连接点匹配指定的类型 |
@within() | 限制连接点匹配指定注解标注的类型 |
@annotaion() | 限制匹配带有指定注解连接点 |
bean() | spring独有,限制匹配指定的Bean名称的类 |
- 合并表达式
&&–>表示完全匹配
||–>表示部分匹配
!–>表示排除表达式匹配到的