近期我们项目组接收到一个任务,就是在之前开发的“智物”系统中添加一些功能,当然,这种添加是要符合设计模式“开闭原则”的,“对拓展开发,对修改关闭”,也就是说我们这次的功能拓展不可以修改以前系统的代码,一句也不可以改。那么在这种背景下进行开发的话,我们第一个想到的便是利用AOP切面进行功能拓展了。所以,今天小编就来为大家分享一下AOP的细节。
本篇我们重点分为两部分进行介绍:
AOP获取目标方法的参数、返回值、异常信息的方式。
AOP的5个通知执行顺序。
一、AOP获取目标方法参数、返回值、异常信息的方式
①、获取目标方法的参数
在通知方法中的形参列表中可以添加一个参数“JoinPoint joinPoint”,我们可以通过该参数来获取目标对象的方法和参数。
joinPoint.getSignature( ) 获取方法的全签名
joinPoint.getSignature( ).getName( ) 获取方法名称
Object[] args=joinPoint.getArgs( ) 获取目标方法的参数,参数想要打印出来需要Arrays.asList(args)
②、获取目标方法的返回值
@Pointcut("execution(public int com.atguigu.impl.MyMathCalculator.*(..))")
public void MyPoint(){};
@AfterReturning(value="MyPoint()",returning="result")
public static void logReturn(JoinPoint joinPoint,Object result){
Signature signature &