使用springaop进行日志记录
我正在尝试向我的应用程序添加某种跟踪。它的工作原理是这样的:我在我的配置中设置了包名,并且记录了对该包中类的公共方法的所有调用 由于一些技术原因,我不能在这里使用编织,所以我尝试使用spring代理。 我的切入点使用springaop进行日志记录,spring,logging,aop,spring-aop,Spring,Logging,Aop,Spring Aop,我正在尝试向我的应用程序添加某种跟踪。它的工作原理是这样的:我在我的配置中设置了包名,并且记录了对该包中类的公共方法的所有调用 由于一些技术原因,我不能在这里使用编织,所以我尝试使用spring代理。 我的切入点 execution(public * com.my.package.*.*(..)) 而且效果很好。但是Spring使用代理或CGLIB来代理类,所以每个类至少应该 具有无参数构造函数 所有方法都应该是某些接口的实现 无法代理其他类。我可以不记录它们。但是spring创建了代理并破
execution(public * com.my.package.*.*(..))
而且效果很好。但是Spring使用代理或CGLIB来代理类,所以每个类至少应该
具有无参数构造函数
所有方法都应该是某些接口的实现
无法代理其他类。我可以不记录它们。但是spring创建了代理并破坏了我的应用程序
我如何告诉spring:如果这个类没有无参数构造函数,并且它的一些方法不是接口的实现,那么不要代理它?不确定您的问题的答案,但是,另一种跟踪方法是使用注释:
public @interface Monitor {
}
方面:
public aspect MonitoringAspect {
pointcut methodToMonitor() : execution(@Monitor * *(..));
}
用法:
@Monitor
public void methodToBeMonitored() {
}
这样,您只会影响您想要的方法。
我想对于一个大型项目,这可能不起作用,因为您需要监视许多方法。谢谢,但我不想更改我的类来添加日志记录。我想从外部管理日志记录。这就是以下方面: