首頁 >Java >java教程 >springboot專案啟動後的執行方法有哪些

springboot專案啟動後的執行方法有哪些

王林
王林轉載
2023-05-27 23:16:462061瀏覽

1 方法

  • ApplicationListenerf4b06c38ff2750052547656f66f34e34 不建議

  • ##ApplicationListener  推薦

  • CommandLineRunner推薦

方法1:spring的ApplicationListenerf4b06c38ff2750052547656f66f34e34介面

實作ApplicationListener接口,並實作onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent)方法##
@Service
public class SearchReceive implements  ApplicationListener<ContextRefreshedEvent> {
   @Override
   public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
       if (contextRefreshedEvent.getApplicationContext().getParent() == null) {//保证只执行一次
           //需要执行的方法
       }
   }
}
ee :springboot的ApplicationRunner介面

ApplicationListener和CommandLineRunner兩個介面是springBoot提供用來在spring容器載入完成後執行指定方法。兩個介面區別主要是入參不同。

實作ApplicationRunner介面

@Component
@Order(value = 1)
public class AfterRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("执行方法");
    }
}

方法3:springboot的CommandLineRunner介面

實作CommandLineRunner介面

@Component
@Order(value = 2)
public class CommandLineRunnerImpl implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("执行方法");
    }
}

附註:如果同時implements   ApplicationListener與CommandLineRunner兩個介面,ApplicationRunner介面的方法先執行,CommandLineRunner後執行;

@Slf4j
@Component
public class RunnerTest implements ApplicationRunner, CommandLineRunner {
 
  @Override
  public void run(ApplicationArguments args) throws Exception {
    System.out.println("服务启动RunnerTest   ApplicationRunner执行启动加载任务...");
  }
 
  @Override
  public void run(String... args) throws Exception {
    System.out.println("服务启动RunnerTest    CommandLineRunner 执行启动加载任务...");
    }
  }
}

2 指定執行順序

當專案中同時實作了ApplicationRunner和CommondLineRunner介面時,可使用Order註解或實作Ordered介面來指定執行順序,數值越小越先執行。

3 原理

SpringApplication 的run方法會執行afterRefresh方法。

afterRefresh方法會執行callRunners方法。

callRunners方法會呼叫所有實作ApplicationRunner和CommondLineRunner介面的方法。

以上是springboot專案啟動後的執行方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除