Spring Boot 如何解决项目启动时初始化资源

这个神器就是 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

相关文章
相关标签/搜索