@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方法指定的返回值是我们自定义注解方法的返回结果