springboot 启动的时候,系统总是有一些资源需要自定义去启动初始化,这些是如何实现的呢?
接口CommandLineRunner
,CommandLineRunner
接口的 Component
会在所有 Spring Beans
都初始化之后,SpringApplication.run()
之前执行,非常适合在应用程序启动之初进行一些数据初始化的工作。
如果我们在启动容器的时候需要初始化很多资源,并且初始化资源相互之间有序,那如何保证不同的 CommandLineRunner
的执行顺序呢?Spring Boot 也给出了解决方案。
使用 @Order
注解 后面1,2,3表示优先级,1,2,3表示越小越早执行的顺序
@Component
@Order(2) //(1),(2),(3)...
public class OrderRunner2 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("start to initialize ...");
}
}