@EventListener(ApplicationReadyEvent.class) 只启动一个方法?

dav*_*vid 7 spring spring-boot

我正在尝试在 Spring Boot 项目启动后运行一些方法。@EventListener(ApplicationReadyEvent.class)我在项目启动后想要运行的方法上方使用注释。但它一次只启动一种方法。我想同时启动多种方法。这是 的预期行为吗@EventListener(ApplicationReadyEvent.class)

Mar*_*nik 0

可以放置多个(多个)方法,并注释@EventListener所有这些方法都将被执行:

@Configuration
public class SampleConfiguration {

    @Bean
    public SampleBean sampleBean() {return new SampleBean();}  

    @EventListener
    public void onApplicationReadyEvent(ApplicationReadyEvent event) {
        System.out.println("Hello");
    }


    @EventListener
    public void onApplicationReadyEvent2(ApplicationReadyEvent event) {
        System.out.println("How are you");
    }

}
Run Code Online (Sandbox Code Playgroud)

这将在应用程序上下文成功启动时打印“Hello”和“How are you”。

现在,spring 确实不会同时调用它们,它会解析所有侦听器并按顺序调用它们。

如果您需要并行执行,您可以创建一个侦听器,它将作为必须并行运行的逻辑任务的“入口点”,并使用线程/线程池执行器并行运行您选择的代码