如何调试弹簧 AOP

2022-09-02 13:45:05

我对Spring AOP有一个问题,它没有将一个方面与它应该的所有方法联系起来(在我看来)(请参阅此问题以获取有关根本问题的更多信息:Spring AOP忽略了Hessian服务的一些方法)。

如何调试,哪些方法和实例与哪些方面相结合?有没有像春天aop的详细标志这样的东西,它提供了这些信息?


答案 1

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

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

    // 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 级日志记录,然后查看输出内容。


答案 2