如何自定义注解对返回值操作
第一步
@Inherited
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface LogAnnotation {
String modelName() default "";
String option();
}
第二步
@Aspect
@Component
public class LogAspect {
@Pointcut("@annotation(cn.stylefeng.guns.modular.test.annotation.LogAnnotation)")
public void operLogPoinCut(){
}
@Around("operLogPoinCut()")
public Object addLogSuccess(ProceedingJoinPoint joinPoint) throws Throwable{
Object proceed = joinPoint.proceed();
System.out.println(111111111);
if (!(proceed instanceof ResponseData)){
System.err.println("返回的结果不是ResponseData类型,直接返回原值");
return proceed;
}
ResponseData responseData = (ResponseData) proceed;
Object data = responseData.getData();
Map collection = (Map) data;
collection.put("这是新的","这是新的测试");
return responseData;
}
}
运行结果
