我正在尝试为我的应用添加某种跟踪功能。它会这样工作:我在我的配置中设置包名称,并记录对此包中的类的公共方法的所有调用。
我不能在这里使用编织(由于某些技术原因),所以我尝试使用spring-proxy。 我的切入点
execution(public * com.my.package.*.*(..))
它工作正常。但是Spring使用Proxy或CGLIB代理类,所以每个类至少应该
无法代理其他课程。我可以不记录它们。但是spring会创建代理并破坏我的应用程序。
我怎么能告诉spring:“如果它没有无参数构造函数并且它的某些方法不是接口的实现,那么不要代理这个类”?
答案 0 :(得分:0)
不确定问题的答案,然而,另一种进行跟踪的方法是使用注释:
public @interface Monitor {
}
方面:
public aspect MonitoringAspect {
pointcut methodToMonitor() : execution(@Monitor * *(..));
}
用法:
@Monitor
public void methodToBeMonitored() {
}
这样您只会影响您想要的方法。 我想对于一个大项目,这可能不起作用,因为你想监视许多方法。