1

@Profiled为公共和私有方法添加了注释。我可以看到公共方法的计时日志。但是私有方法没有计时日志。

我正确地进行了配置。

@Profiled
public BigInteger nextPrime() {
    currentPrime = currentPrime.nextProbablePrime();
    return currentPrime;
}

@Profiled
private void test()
{
    try{
    Thread.sleep(100);
    }catch(Exception e)
    {
       e.printStackTrace();
     }
}

@profiled 注解是否仅适用于公共方法?

4

2 回答 2

2

很可能您已经使用 Spring AOP 配置了 perf4j,并且由于从同一类内部调用方法时不会调用 Spring AOP 代理(如您使用该test方法的情况),因此不会记录任何性能统计信息。

查看这篇解释 Spring AOP 陷阱的博客文章

您的问题的一种解决方案是将 AspectJ 与 perf4j 一起使用,因为 AspectJ 可以处理这种情况

于 2014-05-28T10:51:54.320 回答
0

是的。这是 Spring AOP 的限制:

使用代理时,您应该仅将注释应用于具有公共可见性的方法。如果您使用这些注释对受保护的、私有的或包可见的方法进行注释,则不会引发错误,但带注释的方法不会显示配置的缓存设置。如果您需要在更改字节码本身时注释非公共方法,请考虑使用 AspectJ(见下文)。”</p>

于 2014-11-14T18:40:43.923 回答