在这几天做项目时用到了AOP的后置通知,所以就初略的研究了一下他们的使用方法和API,下面我就浅显的聊一下
aop的通知大致上可以分为以下几种:
@Before: 前置通知, 在方法执行之前执行
@After: 后置通知, 在方法执行之后执行
@AfterRunning: 返回通知, 在方法返回结果之后执行
@AfterThrowing: 异常通知, 在方法抛出异常之后
@Around: 环绕通知, 围绕着方法执行
我现在的项目用到的是返回通知,所以我就结合我用到的聊一下
@Aspect @Component @Slf4j public class AopLogging { //* 代表该方法为所有类型和所有返回值类型,括号里的..表示该方法的所有类型参数 @AfterReturning(returning="rev", pointcut="execution(* com.it.controller.InspectorController.save(..))") public void after(Object rev){ log.debug("后置通知获取目标对象返回结果--" + rev); log.debug("后置通知进入"); } }
returning="rev"我个人理解这个就应该是我们定义的返回对象的名称,这个名称和通知方法的形参名称一样,形参也应该是个Object对象,通知还有一个比较重要的对象,我这个方法没有用到,那就是JoinPoint 对象
JoinPoint对象封装了AOP中切面方法的信息,在切面方法中添加JoinPoint参数,就可以获取到目标方法的形参对象.
常用api
方法名 | 功能 |
---|---|
Signature getSignature(); | 获取封装了署名信息的对象,在该对象中可以获取到目标方法名,所属类的Class等信息 |
Object[] getArgs(); | 获取传入目标方法的参数对象 |
Object getTarget(); | 获取被代理的对象 |
Object getThis(); | 获取代理对象 |
目前我用到了这么多,我也就先聊这么多吧,后期项目再用到了相关方法,后期再更新,如果各位大牛有好的建议和用法,想法可以私信我