阅读前,最好先熟悉一下反射的基本概念和基本的api。
Spring AOP主要作用是实现方法拦截,对日志等行为做统一处理。当连接点方法执行时,通过切点匹配,织入切面方法。
那么我们需要知道连接点的什么信息呢?
- 连接点方法名,参数值,参数类型等,对象。
对应在AOP中,就是Joinpoint对象和Joinpoint对象的组成signature。
Object getTarget();//获取切点对象
Object[] getArgs();//获取参数值
MethodSignature signature =(MethodSignature) joinPoint.getSignature();//获取方法签名
通过signature.getMethod()
获取一个Method对象。
随后可以通过反射等API,结合业务,定义通知行为来织入操作。
相关概念
-
连接点,就是需要aop统一拦截的方法。
-
切点,与连接点对应,切点就是在切面类中定义切面关注的连接点。
-
切面,定义切点对应的行为,也就是应该织入的方法。
-
通知,定义织入方法执行的时机