Java Perf4j不评测带注释的接口方法

Java Perf4j不评测带注释的接口方法,java,spring,annotations,perf4j,Java,Spring,Annotations,Perf4j,我有以下接口和类 public interface ServiceA { @Profiled String getString(); } public class ServiceAImpl implements ServiceA{ String getString(){ System.out.println("getString"); } } <beans ....> <aop:aspectj-autoprox

我有以下接口和类

public interface ServiceA {

    @Profiled
    String getString();
}

public class ServiceAImpl implements ServiceA{
    String getString(){
      System.out.println("getString");
    }

}

<beans ....>    
    <aop:aspectj-autoproxy />
     <bean id="timingAspect" class="org.perf4j.log4j.aop.TimingAspect"/>"
     <bean id="serviceA" class="com.naresh.profiler.service.ServiceAImpl" />
</beans>
公共接口服务a{
@轮廓
字符串getString();
}
公共类ServiceAImpl实现ServiceA{
字符串getString(){
System.out.println(“getString”);
}
}
"

当我执行
serviceA.getString()时
调用没有被TimingSpect截获。如果我将注释从接口移动到实现类,它会被截获。我看到的原因是方法级注释没有被继承。如何解决这个问题?通过编写一些
CustomBeanAnnotationProcessor

,即使
@Profiled
使用了
@Inherit它不起作用,因为继承的注释只会传递给子类,而不会传递给接口的实现

@当用于注释时,继承的注释不会被继承 类型以外的任何类型。实现一个或多个 接口从不从它所属的接口继承任何注释 工具

资料来源:

更多详情:

您的自定义处理器会做什么,查询服务的接口以获取
@Profiled
?我建议您手动注释服务实现,因为根据我的经验,
@Profiled
只有在您将其与
标记和
消息
属性一起使用时才有用(我认为每个实现类都不同)

->“@Profiled(tag=“dynamicTag{$0}”)”