+-
java – SpringBoot EventListener不接收事件
我的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不接收事件 - 乐贴网