Spring:CustomizedTraceInterceptor 未被调用

标签 spring aspectj spring-aop

我的拦截器声明如下所示:

<bean id="loggingInterceptor"
      class="org.springframework.aop.interceptor.CustomizableTraceInterceptor">
    <property name="enterMessage" value="Enter: $[targetClassShortName].$[methodName]($[arguments])"/>
    <property name="exitMessage" value="Exit: $[targetClassShortName].$[methodName](...) returning [$[returnValue]]"/>
</bean>

使用切入点:

<aop:config proxy-target-class="true">
    <aop:advisor advice-ref="loggingInterceptor"
                 pointcut="execution(public * com.mycompany.server..*.*(..))"/>
</aop:config>

但是 CustomizedTraceInterceptor 没有任何痕迹。

  • 我验证了切入点中的包是正确的
  • 我确实检查了我的日志记录级别,它被设置为跟踪。
  • 我验证了 spring-aop.jar 是 Maven 依赖项之一
  • 添加了aspectjrt和aspectjweaver到maven依赖

我什至实现了自己的拦截器,该拦截器扩展了 CustomizedTraceInterceptor 并覆盖了 writeToLog 方法,放置 System.out.println 只是为了查看该类是否被调用。事实并非如此。

有人能看到我错过了什么吗?

最佳答案

您需要设置 bean CustomizedTraceInterceptor 的 loggername 属性。 另请确保将日志级别设置为跟踪。

您可以为记录器类声明任何名称 - 您正在将其编写为跟踪 log4j 配置的一部分。

关于Spring:CustomizedTraceInterceptor 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150666/

相关文章:

java - Spring AOP : Aspect class is not executed

java - 无法获取 Jedis 连接;无法从池中获取资源

java - 使用 Thymeleaf 中的变量一次设置多个标签属性

spring - 容器化 Spring Boot 应用程序时 "-Djava.security.egd=file:/dev/./urandom"到底做了什么

java - AspectJ:动态计算视野范围

java - 无法通过 aspectj 建议的反射检索私有(private)注释

java - Spring boot - 有没有办法为给定的配置文件禁用 AOP?

java - 使用 Spring AOP 触发了哪个接口(interface)(扩展 CrudRepository)的删除方法?

java - 没有xml配置的spring是不扫描包的

java - 使用 AspectJ 保存到文件