Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行时Spring注册ApplicationListenerbean_Spring - Fatal编程技术网

运行时Spring注册ApplicationListenerbean

运行时Spring注册ApplicationListenerbean,spring,Spring,我正在使用 applicationContext.getAutowireCapableBeanFactory().initializeBean(bean, name); 在运行时注册bean。这个bean实际上可以被认为是现有单例的子bean 如果bean实现ApplicationListener,我会在日志中得到一个警告,因为没有底层bean定义来指示这个bean应该被视为一个单例。当然,它不会像警告所说的那样接收应用程序事件 Inner bean 'name' implements App

我正在使用

applicationContext.getAutowireCapableBeanFactory().initializeBean(bean, name);
在运行时注册bean。这个bean实际上可以被认为是现有单例的子bean

如果bean实现ApplicationListener,我会在日志中得到一个警告,因为没有底层bean定义来指示这个bean应该被视为一个单例。当然,它不会像警告所说的那样接收应用程序事件

Inner bean 'name' implements ApplicationListener interface but is not reachable for event multicasting by its containing ApplicationContext because it does not have singleton scope. Only top-level listener beans are allowed to be of non-singleton scope.
如何在运行时将bean注册为singleton,从而避免bean后处理器警告,以及让应用程序事件工作


(请参阅AbstractApplicationContext:1413)

为什么要手动初始化bean?为什么不简单地将它们配置为其他bean(可能为此使用基于Java的配置?)。当您调用
initializeBean
时,上下文已经初始化,
ApplicationListener
bean已经注册。您试过这个答案吗:它建议
context.addApplicationListener(新的CustomEventHandler())