@AfterReturning里面的Returning值解释,以及获取自定义注解参数值
今天写代码遇到了@AfterReturning(returning = ‘var’)
查了很多网络资料都只说这个是方法返回值,并没有说是什么方法返回值,这里坐下代码解释
// 被切方法
@RestController
@RequestMapping("/show")
public class ControllerTwo {
@RequestMapping("/test")
@Hh(status = "2")
public String test(){
return "我是嫩爹";
}
}
// 自定义注解
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Hh {
// 当前注解参数status 默认值0
String status() default "0";
}
// 定义切面
@Aspect
@Component
public class MyAspect {
// 该后置返回后触发切点是被@Hh注释的方法
@AfterReturning(pointcut = "@annotation(com.
example.aop.Hh)",returning = "result")
public void show(JoinPoint joinPoint, Object result){
// 获取注解
MethodSignature signature =
(MethodSignature)joinPoint.getSignature();
// 获取当前方法被Hh注解注释的注解对象
Hh annotation =
signature.getMethod().getAnnotation(Hh.class);
String status = annotation.status();
// 获取自定义注解上面的status的值
System.out.println(status);
//这里的result就是被切方法的return的返回值
System.out.println(result);
}
}
打印结果
2
我是嫩爹
结论
可以看到如果我们使用了切面,AfterReturning里面的return方法指定的返回值是我们自定义注解方法的返回结果