【问题标题】:How to debug Spring AOP如何调试 Spring AOP
【发布时间】:2011-02-28 20:48:44
【问题描述】:

我对 Spring AOP 有一个问题,它没有将一个方面与它应该的所有方法联系起来(在我看来)(有关根本问题的更多信息,请参阅此问题:Spring AOP ignores some methods of Hessian Service)。

如何调试,哪些方法和实例与哪些方面相结合?是否有类似于 spring aop 的详细标志,它提供了该信息?

【问题讨论】:

    标签: java debugging spring logging aop


    【解决方案1】:

    Spring AOP 类中似乎没有太多的日志记录代码,但是……

    如果 Spring AOP 决定使用 Cglib 来创建代理,有一句话可能会对您有所帮助:

        // in org.springframework.aop.framework.Cglib2AopProxy.getProxy(ClassLoader)
        if (logger.isDebugEnabled()) {
            logger.debug("Creating CGLIB2 proxy: target source is " + this.advised.getTargetSource());
        }
    

    当使用 JDK 代理时,类似的一个似乎会派上用场:

        // in org.springframework.aop.framework.JdkDynamicAopProxy.getProxy(ClassLoader)
        if (logger.isDebugEnabled()) {
            logger.debug("Creating JDK dynamic proxy: target source is " + this.advised.getTargetSource());
        }
    

    只需尝试为这两个类打开 DEBUG 级别的日志记录,看看输出是什么。

    【讨论】:

    • 伟大的指针我用它作为通过spring AOP代码实际调试的起点。
    • 如何为这两个类启用 DEBUG 级别的日志记录?我使用 logback。
    • 对于 logback 添加类似:<logger name="org.springframework.aop" additivity="false"><level value="DEBUG" /><appender-ref ref="consoleAppender" /></logger>
    • 我猜在基于 Spring Boot 的应用程序中,在 application.yml 这样的通用属性文件中添加属性 logging.level.org.springframework.aop: DEBUG 应该可以完成这项工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多