SpringBoot 项目启动后执行代码

在开发的过程中,有时需要在应用启动后自动进行一些操作,比如:项目启动前初始化资源文件、初始化线程池、提前加载加密证书等等。下边介绍两个接口CommandLineRunner 和 ApplicationRunner 来满足我们的需求,它们会在spring Bean初始化之后SpringApplication run方法执行之前调用,如果需要指定执行顺序,可以使用@Order注解,值越小越先执行。

执行顺序:

  • 当@Order注解的值相等时,先执行ApplicationRunner,然后执行CommandLineRunner
  • 当@Order注解的值不相等时,谁小谁先执行
  • 当@Order注解的值为空或者未设置@Order注解,放到最后执行。先执行ApplicationRunner,然后执行CommandLineRunner
  • ApplicationRunner

    @Component@Order(1)public class MyApplicationRunner1 implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println(“MyApplicationRunner1”); }}@Component@Order(2)public class MyApplicationRunner2 implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println(“MyApplicationRunner2”); }}@Componentpublic class MyApplicationRunner3 implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println(“MyApplicationRunner3”); }}

    CommandLineRunner

    @Component@Order(1)public class MyCommandLineRunner1 implements CommandLineRunner { @Override public void run(String… args) throws Exception { System.out.println(“MyCommandLineRunner1”); }}@Component@Order(2)public class MyCommandLineRunner2 implements CommandLineRunner { @Override public void run(String… args) throws Exception { System.out.println(“MyCommandLineRunner2”); }}@Componentpublic class MyCommandLineRunner3 implements CommandLineRunner { @Override public void run(String… args) throws Exception { System.out.println(“MyCommandLineRunner3”); }}

    执行结果

    MyApplicationRunner1MyCommandLineRunner1MyApplicationRunner2MyCommandLineRunner2MyApplicationRunner3MyCommandLineRunner3

    郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
    上一篇 2022年6月27日 06:02
    下一篇 2022年6月27日 06:02

    相关推荐

    联系我们

    联系邮箱:admin#wlmqw.com
    工作时间:周一至周五,10:30-18:30,节假日休息