warm-flow 监听器对象获取问题

初次使用warm-flow 实现了 Listener 接口,配置名字和路径也有写对,但监听器一直没启动,查看底层代码
Listener listener = (Listener) FrameInvoker.getBean(clazz);

在要执行监听器时,一直获取不到对象,很疑惑,打印执行

String[] names = applicationContext.getBeanNamesForType(Listener.class);
System.out.println(Arrays.toString(names));
Class<?> clazz = ClassUtil.getClazz("com.ruoyi.office.listener.GradeLeaderLeaveStartListener");
Object bean = FrameInvoker.getBean(GradeLeaderLeaveStartListener.class);
Listener listener = (Listener)FrameInvoker.getBean(clazz);
System.out.println(clazz.getMethods());
System.out.println(listener);
System.out.println("FrameInvoker取到的Bean = " + bean);

一直取不到listener的值,但监听器对象已经成功注入容器了。那就是上下文加载的问题,排查良久发现 业务系统和热加载器不是同一个(热部署插件导致)
热部署插件jrebel或者devtools导致的问题,检查是否使用热部署插件,比如spring.devtools,加上配置spring-devtools.properties

restart.include.flow=/org.dromara.warm.*.jar

即可解决问题,该常见问题在官方亦有记载 
https://warm-flow.dromara.org/master/other/troubleshooting.html#_3%E3%80%81initflow-%E6%9C%AA%E5%8A%A0%E8%BD%BD
排查良久,看了N多底层代码,才发现问题 心有不甘,特意记载

posted @ 2025-09-21 16:11  一剑天门  阅读(36)  评论(0)    收藏  举报