我想记录控制器中某些方法的执行时间
现在我只想弄清楚所以我不记录但是打印,并且它适用于所有方法。
我有一个Profiler类:
@Aspect
public class Profiler {
@Pointcut("execution(public * *(..))")
public void methods() {}
@Around("methods()")
public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
Object result = joinPoint.proceed();
System.out.println(joinPoint.getSignature() + " " + (System.currentTimeMillis() - start));
return result;
}
}
我的pom.xml包含aspectjrt版本1.8.5
我没有使用Spring。
我尝试了几十种注释组合,如@Provider,@ ApplicationScoped,@ Initialized(ApplicationScoped.class),@ Name。
我尝试使用javax.ws.rs.core.Application,jboss-aop.xml等。
没有任何作用(但没有错误): - (
感谢您的帮助。
答案 0 :(得分:0)
Java EE 7完全不支持AOP,但使用拦截器通常可以达到同样的效果。
有关详情,请查看Interceptors和CDI规范。
答案 1 :(得分:0)
AOP的最后一个版本是https://www.mssqltips.com/sqlservertip/2972/sql-server-reporting-services-reportitems-collection/,是released in 2010之前的一年。
Java 7 was released或更高,所以不幸的是,您的问题的答案似乎
AOP用于操作Java字节码,Java 6和Java 7字节码将不同。这将使AOP库与6
之后的Java版本不兼容