+-

我的EventListener注释不会收到任何 Spring事件.这是我的代码:
@Component
public class ProxyConfig {
public ProxyConfig() {
System.out.println("I can see this in the console");
}
@EventListener
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
System.out.println("WON'T WORK :-("); // FIXME
}
@EventListener
public void test(ApplicationStartedEvent event) {
System.out.println("WON'T WORK :-("); // FIXME
}
}
这是我的Application类:
@SpringBootApplication
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(MyApp.class, args);
}
}
根据https://spring.io/blog/2015/02/11/better-application-events-in-spring-framework-4-2和https://solidsoft.wordpress.com/2015/09/29/annotation-driven-event-listeners-in-spring-4-2/它必须工作,但它仍然不打印我的“将不工作:-(”字符串:(
任何的想法?
谢谢!
最佳答案
您正在侦听的两个事件都是在应用程序生命周期的早期发布的.
ApplicationStartedEvent在SpringApplication启动之前“尽可能早地发送 – 在环境或ApplicationContext可用之前,但在注册了ApplicationListeners之后”.
ApplicationEnvironmentPreparedEvent是在“SpringApplication启动并且环境首次可用于检查和修改时”发布的.
在这两种情况下,事件发布得太早,无法通过注释和应用程序上下文找到侦听器.正如您所观察到的,您可以使用spring.factories来注册您的监听器.或者,您可以在SpringApplication上使用setter方法.
点击查看更多相关文章
转载注明原文:java – SpringBoot EventListener不接收事件 - 乐贴网