在 Spring Boot 启动后运行代码

2022-08-31 04:52:09

我想在我的 spring-boot 应用开始监视目录的更改后运行代码。

我尝试运行一个新线程,但此时尚未设置服务。@Autowired

我已经能够找到 ,在设置注释之前触发。理想情况下,我希望在应用程序准备好处理 http 请求后触发事件。ApplicationPreparedEvent@Autowired

有没有更好的事件可以使用,或者在应用程序在Spring-boot中运行后运行代码的更好方法?


答案 1

就这么简单:

@EventListener(ApplicationReadyEvent.class)
public void doSomethingAfterStartup() {
    System.out.println("hello world, I have just started up");
}

在版本上测试1.5.1.RELEASE


答案 2

尝试:

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {

    @SuppressWarnings("resource")
    public static void main(final String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);

        context.getBean(Table.class).fillWithTestdata(); // <-- here
    }
}

推荐