【问题标题】:Spring Boot @Around does not work on javax.jms.MessageListsner.onMessage()Spring Boot @Around 不适用于 javax.jms.MessageListsner.onMessage()
【发布时间】:2019-11-18 23:02:55
【问题描述】:

我正在尝试为我们的 AMQP 项目中的某些方法开发日志拦截器。 我正在使用 Springs @Aspect-Annotation 和自定义注释来创建拦截器。我们的 AMQP-Controller 实现了javax.jms.MessageHandler 接口并覆盖了我想要拦截的onMessage(Message)-Method。

该类具有以下签名:

public abstract class AMQPController implements MessageListener {
...
   @Override
   public void onMessage(Message message){
      // application logic
   }
...
}

我的拦截器如下所示:

@Slf4j
@Aspect
@Component
public class LoggedInterceptor {

   @Around("execution(public void javax.jms.MessageListener+.onMessage(..))")
   public Object intercept(ProceedingJoinPoint joinPoint) {
      // application logic
   }
}

每次触发新的 AMQP-Message 时,都会触发 onMessage()-Method,但我的拦截器似乎没有被触发。

有人知道为什么吗?

来自德国的问候 :-)

【问题讨论】:

  • 没有javax.jms.MessageHandler
  • 对不起,我的意思是javax.jms.MessageListener(见编辑过的问题):-)
  • 该方法不是在实现上调用,而是在abstract 上调用,因此是超类。
  • 嘿。你能做到吗?

标签: spring-boot jms interceptor aspect


【解决方案1】:

尝试使用它,

@Around(value = "执行 (* javax.jms.MessageListener.onMessage(..))")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 2018-10-18
    • 2018-07-04
    • 2023-03-26
    • 2019-02-24
    • 2016-04-02
    • 2020-03-19
    相关资源
    最近更新 更多