用spring-aop记录

时间:2012-11-15 15:37:21

标签: spring logging aop spring-aop

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

public @interface Monitor {
}

方面:

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

用法:

@Monitor
public void methodToBeMonitored() {
}

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