您好,登錄后才能下訂單哦!
這篇文章主要介紹了SpringBoot怎么實現啟動時自動執行代碼的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇SpringBoot怎么實現啟動時自動執行代碼文章都會有所收獲,下面我們一起來看看吧。
目前開發的SpringBoot項目在啟動的時候需要預加載一些資源。而如何實現啟動過程中執行代碼,或啟動成功后執行,是有很多種方式可以選擇,我們可以在static代碼塊中實現,也可以在構造方法里實現,也可以使用@PostConstruct注解實現。
當然也可以去實現Spring的ApplicationRunner與CommandLineRunner接口去實現啟動后運行的功能。在這里整理一下,在這些位置執行的區別以及加載順序。
static靜態代碼塊,在類加載的時候即自動執行。
在對象初始化時執行。執行順序在static靜態代碼塊之后。
@PostConstruct注解
PostConstruct注解使用在方法上,這個方法在對象依賴注入初始化之后執行。
ApplicationRunner和CommandLineRunner
SpringBoot提供了兩個接口來實現Spring容器啟動完成后執行的功能,兩個接口分別為CommandLineRunner和ApplicationRunner。
這兩個接口需要實現一個run方法,將代碼在run中實現即可。這兩個接口功能基本一致,其區別在于run方法的入參。ApplicationRunner的run方法入參為ApplicationArguments,為CommandLineRunner的run方法入參為String數組。
何為ApplicationArguments
官方文檔解釋為:
”Provides access to the arguments that were used to run a SpringApplication.
在Spring應用運行時使用的訪問應用參數。即我們可以獲取到SpringApplication.run(…)的應用參數。
Order注解
當有多個類實現了CommandLineRunner和ApplicationRunner接口時,可以通過在類上添加@Order注解來設定運行順序。
為了測試啟動時運行的效果和順序,編寫幾個測試代碼來運行看看。
TestPostConstruct
@Component public class TestPostConstruct { static { System.out.println("static"); } public TestPostConstruct() { System.out.println("constructer"); } @PostConstruct public void init() { System.out.println("PostConstruct"); } }
TestApplicationRunner
@Component @Order(1) public class TestApplicationRunner implements ApplicationRunner{ @Override public void run(ApplicationArguments applicationArguments) throws Exception { System.out.println("order1:TestApplicationRunner"); } }
TestCommandLineRunner
@Component @Order(2) public class TestCommandLineRunner implements CommandLineRunner { @Override public void run(String... strings) throws Exception { System.out.println("order2:TestCommandLineRunner"); } }
執行結果
關于“SpringBoot怎么實現啟動時自動執行代碼”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“SpringBoot怎么實現啟動時自動執行代碼”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。