无法进入监听事件中@EventListener标记的方法

Blade 未结 2 351
849405952
849405952 2023-09-13 14:45

一、背景

1. 因目前使用通用模块日志时需要创建BladeLogger logger对象进行记录,为方便我模仿blade-starter-log:3.1.1版本的ApiLog自定义注释,在blade-log模块中加入类似代码,但在其他服务调用后,发布Event事件无法进入回调方法,麻烦指点。(在blade-log的controller中能够正常运行,进入事件,所以不知道是不是缺少部分配置,导致跨服务无法进入事件)


2. 代码结构:


image.png



image.png



image.png



image.png

image.png




image.png



image.png




image.png




image.png




image.png



3.访问bladex-system的listByRoleId接口后,根据自定义@OperationLogs注释,跳转到bladex-log模块中进行OperationLogEvent事件发布后,无法进入saveOperationLog方法。


二、你期待的结果是什么?实际看到的又是什么?


我希望访问任意模块(例如测试的bladex-system)的被自定义@OperationLogs 注释方法,能够回调到OperationLogListener中进入saveOperationLog处理日志。


image.png

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

使用的是bladex 3.1.1版本,在windows上。


四、请提供详细的错误堆栈信息,这很重要。


  1. 此时是访问blade-system模块中标记自定义注释OperationLogs注释的listByRoleId方法后,进入blade-log模块中OperationLogPublisher监听的publishEvent事件发布方法


image.png



    2. 下一步进入OperationLogEvent,正常情况,下一步应该是进入事件发布公用模块


image.png



    3.  此处可以看到context上下文并不为空


image.png


    4. 然后就是blade-log中调试与blade-system区别,blade-system中的方法不走以下方法了,直接结束,没有报错。(在blade-log中的controller是走这里的)


image.png


五、若有更多详细信息,请在下面提供。

2条回答
  •  849405952
    849405952 (楼主)
    2023-09-13 17:32

    我的自定义日志注解代码在blade-log模块,调用方法是在blade-system模块,所以blade-system模块已经引入了blade-log的pom,blade-system也调用了blade-starter-log模块。

    没有在原生的blade-starter-log的代码中修改。

    基本就是模仿blade-starter-log写的,缺少了什么,所以进不去等同于saveApiLog方法(在blade-log模块内可以,在其他服务不行)

    image.png

提交回复