1

我正在尝试向我的应用程序添加某种跟踪。它会像这样工作:我在我的配置中设置包名称,并记录对该包中类的公共方法的所有调用。

我不能在这里使用编织(由于一些技术原因),所以我尝试使用spring-proxy。我的切入点

execution(public *  com.my.package.*.*(..))

它工作正常。但是什么Spring使用Proxy或者CGLIB来代理类,所以每个类至少应该

  • 有无参数构造函数
  • 所有方法都应该是某个接口的实现

无法代理其他类。我可以不记录它们。但是 spring 创建了代理并破坏了我的应用程序。

我怎么能告诉spring:“如果它没有无参数构造函数并且它的某些方法不是接口的实现,请不要代理这个类”?

4

1 回答 1

0

不确定您的问题的答案,但是,另一种进行跟踪的方法是使用注释:

public @interface Monitor {
}

方面:

public aspect MonitoringAspect {
pointcut methodToMonitor() : execution(@Monitor * *(..));
}

用法:

@Monitor
public void methodToBeMonitored() {
}

这样你只会影响你想要的方法。我想对于一个大项目,这可能行不通,因为您想监视许多方法。

于 2012-11-15T19:31:14.367 回答