java - springboot应用启动前如何实现ApplicationRunner?
问题描述
通过阅读Spring-boot 文档,我了解到我可以创建一个类来实现ApplicationRunner
或CommandLineRunner
在应用程序启动之前执行代码。
来自文档:
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)
我假设我的课程正在另一个线程中运行。但我感觉这并不能保证我的代码在任何可能的传入请求之前已经完成执行。
这是正确的方法吗?我错过了什么吗?
解决方案
推荐阅读
- etl - 如何为 Informatica 中间接加载中每个文件的数据定义指标
- c# - 如何使用 OrderBy 通过类中的字典键对类列表进行排序?
- typescript - 为什么 typescript 不会为没有类型的参数报告错误,即使我已将 noImplicitAny 指定为 true?
- javascript - 将数字作为对象访问
- oracle - Oracle 10g 过程中如何从用户那里获取价值
- .net - 来自其他存储库的 GitLab CI Visual Studio 依赖项
- docker - Docker Swarm 使用卷扩展容器
- c - 发布多部分文件上传时的 libevent 块
- java - 获取 mysql-connector-java-8.0.11 jar 中子组件 jboss、slf4j 的版本号
- r - 基于列差异匹配R中的记录