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

ぐ巨炮叔叔 提交于 2019-11-27 18:50:21

这个神器就是 CommandLineRunner,ApplicationRunner 

 CommandLineRunner 接口的 Component 会在所有 SpringBeans都初始化之后, SpringApplication.run()之前执行,非常适合在应用程序启动之初进行一些数据初始化的工作。

 

如果我们在启动容器的时候需要初始化很多资源,并且初始化资源相互之间有序,那如何保证不同的 CommandLineRunner 的执行顺序呢?Spring Boot 也给出了解决方案。那就是使用 @Order 注解。

 

用法:

@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 用法相同

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!