这个神器就是 CommandLineRunner,ApplicationRunner java
CommandLineRunner 接口的 Component 会在全部 SpringBeans都初始化以后, SpringApplication.run()以前执行,很是适合在应用程序启动之初进行一些数据初始化的工做。ide
若是咱们在启动容器的时候须要初始化不少资源,而且初始化资源相互之间有序,那如何保证不一样的 CommandLineRunner 的执行顺序呢?Spring Boot 也给出了解决方案。那就是使用 @Order 注解。.net
用法:code
@Component @Order(1) public class OrderRunner1 implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("The OrderRunner1 start to initialize ..."); } }
注意:必定要有@Component这个注解。要否则SpringBoot扫描不到这个类,是不会执行。接口
添加 @Order 注解的实现类最早执行,而且 @Order()里面的值越小启动越早。资源
在实践中,使用 ApplicationRunner 用法相同get