我为公共和私人方法添加了@Profiled
注释。我可以看到公共方法的时间日志。但私有方法没有时间日志。
我正确完成了配置。
@Profiled
public BigInteger nextPrime() {
currentPrime = currentPrime.nextProbablePrime();
return currentPrime;
}
@Profiled
private void test()
{
try{
Thread.sleep(100);
}catch(Exception e)
{
e.printStackTrace();
}
}
@profiled注释是否仅适用于公共方法?
答案 0 :(得分:2)
很可能你已经使用Spring AOP配置了perf4j,并且因为当从同一个类内部调用方法时(例如使用test
方法)调用方法时不会调用Spring AOP代理,因此不会有性能统计信息记录。
查看解释Spring AOP陷阱的this博客文章
问题的一个解决方案是将AspectJ与perf4j一起使用,因为AspectJ可以处理这种情况
答案 1 :(得分:0)
是。它是Spring AOP的限制:
使用代理时,您应该仅应用您的注释 公众可见度的方法。如果你注释protected,私有 或带有这些注释的包可见方法,不会引发错误, 但带注释的方法不会显示已配置的缓存 设置。如果需要,请考虑使用AspectJ(见下文) 注释非公共方法,因为它改变了字节码本身。“