首页 > 解决方案 > springboot应用启动前如何实现ApplicationRunner?

问题描述

通过阅读Spring-boot 文档,我了解到我可以创建一个类来实现ApplicationRunnerCommandLineRunner在应用程序启动之前执行代码。

来自文档:

ApplicationReadyEvent 在任何应用程序和命令行运行程序被调用后发送。它表明应用程序已准备好为请求提供服务。

但是,我有以下课程:

@Component
public class MyClass implements ApplicationRunner {

  @Override
  public void run(ApplicationArguments args) throws Exception {
    Thread.sleep(10000);
  }
}

它说应用程序在 3 秒内启动,而不是等待这 10 秒启动:

2018-11-19 08:51:21.906 INFO 24872 --- [main] osbwembedded.tomcat.TomcatWebServer:Tomcat 在端口上启动:8080 (http),上下文路径为“”

2018-11-19 08:51:21.909 INFO 24872 --- [main] com.mycompany.Application:在 3.565 秒内启动应用程序(JVM 运行 4.016)

我假设我的课程正在另一个线程中运行。但我感觉这并不能保证我的代码在任何可能的传入请求之前已经完成执行。

这是正确的方法吗?我错过了什么吗?

标签: javaspringspring-boot

解决方案


推荐阅读