springboot项目启动后执行方法的三种方式

目录

  • 1 方法
    • 方法1:spring的ApplicationListener< ContextRefreshedEvent>接口
    • 方法2:springboot的ApplicationRunner接口
    • 方法3:springboot的CommandLineRunner接口
  • 2 指定执行顺序
    • 3 原理
      springboot项目启动后执行方法,有三种实现方式。

      1 方法
      • ApplicationListener< ContextRefreshedEvent> 不推荐
      • ApplicationListener推荐
      • CommandLineRunner 推荐

      方法1:spring的ApplicationListener< ContextRefreshedEvent>接口
      实现ApplicationListener接口,并实现 onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent)方法
      @Servicepublic class SearchReceive implementsApplicationListener {@Overridepublic void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {if (contextRefreshedEvent.getApplicationContext().getParent() == null) {//保证只执行一次//需要执行的方法}}}


      方法2:springboot的ApplicationRunner接口
      ApplicationListener和CommandLineRunner两个接口是springBoot提供用来在spring容器加载完成后执行指定方法。两个接口区别主要是入参不同。
      实现ApplicationRunner接口
      @Component@Order(value = https://www.it610.com/article/1)public class AfterRunner implements ApplicationRunner {@Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println("执行方法"); }}


      方法3:springboot的CommandLineRunner接口
      实现CommandLineRunner接口
      @Component@Order(value = https://www.it610.com/article/2)public class CommandLineRunnerImpl implements CommandLineRunner {@Overridepublic void run(String... args) throws Exception {System.out.println("执行方法"); }}

      注:如果同时implementsApplicationListener和CommandLineRunner两个接口,ApplicationRunner接口的方法先执行,CommandLineRunner后执行;
      @Slf4j@Componentpublic class RunnerTest implements ApplicationRunner, CommandLineRunner { @Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println("服务启动RunnerTestApplicationRunner执行启动加载任务..."); } @Overridepublic void run(String... args) throws Exception {System.out.println("服务启动RunnerTestCommandLineRunner 执行启动加载任务..."); }}}


      2 指定执行顺序 当项目中同时实现了ApplicationRunner和CommondLineRunner接口时,可使用Order注解或实现Ordered接口来指定执行顺序,值越小越先执行。

      3 原理 SpringApplication 的run方法会执行afterRefresh方法。
      afterRefresh方法会执行callRunners方法。
      callRunners方法会调用所有实现ApplicationRunner和CommondLineRunner接口的方法。
      【springboot项目启动后执行方法的三种方式】到此这篇关于springboot项目启动后执行方法的三种方式的文章就介绍到这了,更多相关springboot启动后执行方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

        推荐阅读