【发布时间】:2019-08-06 05:21:03
【问题描述】:
我正在编写一个方面来记录控制器中每个 API 调用的请求和响应。 我希望能够在一个类上使用这个注解,因此使用了@Target(ElementType.TYPE)
之前我添加了@Target(ElementType.Method),我在方法上使用了这个注解,它工作正常。 现在我想把它改成@Target(ElementType.TYPE)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ReLogger {}
@Aspect
@Component
public class ReLoggerAspect {
public static final Logger log = LoggerFactory.getLogger("ReLoggerAspect");
@PostConstruct
private void postConstruct() {
log.info("ReLoggerAspect Created");
}
@Around("@annotation(ReLogger)")
private Object reqLoggingAspect(ProceedingJoinPoint joinPoint) throws Throwable {
log.info("Request {}",jointPoint.getArgs()[0);
}
}
在类上使用@ReLoggerAspect
@RestController
@RequestMapping(value = "....", produces = { "application/json" })
@ReLogger
public class Samplecontroller {
/** Some logic here**/.....
}
调用 API SampleController 时不打印请求
【问题讨论】:
标签: java annotations aspectj spring-aop pointcut