【问题标题】:Logging with spring-aop使用 spring-aop 进行日志记录
【发布时间】:2012-11-04 06:01:26
【问题描述】:

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

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

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

而且效果很好。但是什么Spring使用Proxy或者CGLIB来代理类,所以每个类至少应该

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

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

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

【问题讨论】:

    标签: spring logging aop spring-aop


    【解决方案1】:

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

    public @interface Monitor {
    }
    

    方面:

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

    用法:

    @Monitor
    public void methodToBeMonitored() {
    }
    

    这样你只会影响你想要的方法。 我想对于一个大项目,这可能无法正常工作,因为您要监控许多方法。

    【讨论】:

    • 谢谢,但我不想更改我的课程以添加日志记录。我想在外部管理日志记录。那是什么方面:)
    猜你喜欢
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 2012-09-30
    • 2011-04-05
    • 2013-03-22
    • 1970-01-01
    相关资源
    最近更新 更多