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

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

王林
發布: 2023-05-27 23:16:46
轉載
2050 人瀏覽過

1 方法

  • ApplicationListener< ContextRefreshedEvent> 不建議

  • ##ApplicationListener  推薦

  • CommandLineRunner推薦

方法1:spring的ApplicationListener< ContextRefreshedEvent>介面

實作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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板