gpt4 book ai didi

java - Spring Boot 事件监听器不接收事件

转载 作者:搜寻专家 更新时间:2023-11-01 02:04:16 25 4
gpt4 key购买 nike

我的 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-2https://solidsoft.wordpress.com/2015/09/29/annotation-driven-event-listeners-in-spring-4-2/它一定在工作,但它仍然不打印我的“WON'T WORK :-(” String :(

有什么想法吗?

谢谢!

最佳答案

您正在监听的两个事件都在应用程序生命周期的早期发布。

ApplicationStartedEvent 将“在 SpringApplication 启动后尽早发送 - 在 Environment 或 ApplicationContext 可用之前,但在 ApplicationListeners 已注册之后”。

ApplicationEnvironmentPreparedEvent 发布“当 SpringApplication 正在启动并且环境首先可用于检查和修改时。”

在这两种情况下,事件发布得太早,无法通过注释和应用程序上下文找到监听器。正如您所观察到的,您可以使用 spring.factories 来注册您的监听器。或者,您可以在 SpringApplication 上使用 setter 方法。

关于java - Spring Boot 事件监听器不接收事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38487474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com