崛起於Springboot2.X之專案啟動前初始化工作(30)
阿新 • • 發佈:2020-10-19
場景:證券、基金部分公司在自己業務活動專案啟動之前都會將資料提前載入到redis中
CommandLineRunner
介面的Component
會在所有Spring Beans
都初始化之後,SpringApplication.run()
之前執行,非常適合在應用程式啟動之初進行一些資料初始化的工作
1、初始化類
@Component public class MjtRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("在這個方法裡可以初始化資料,載入資料到快取redis"); } }
如果我們需要將mysql等資料提前載入到redis中,可以實現這個類重寫run方法
2、測試結果
在啟動類上新增驗證啟動順序
@SpringBootApplication public class Spring5Application { public static void main(String[] args) { System.out.println("111"); SpringApplication.run(Spring5Application.class, args); System.out.println("2222"); } }
只新增兩行輸出結果,啟動之後,如圖
3、編寫多個初始化
在類上新增@Order註解
@Component @Order(1) public class MjtRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("在這個方法裡可以初始化資料,載入資料到快取redis"); } }
@Component @Order(2) public class TestRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("在這個方法裡可以初始化資料,載入資料到快取redis"); } }
這樣初始化的順序就是從小到大的順序執行。
4、第二種使用註解方法
@PostConstruct 和@PreDestroy
@PostConstruct修飾的方法會在伺服器載入Servle的時候執行,並且只會被伺服器執行一次。PostConstruct在建構函式之後執行,init()方法之前執行。PreDestroy()方法在destroy()方法執行執行之後執行
在方法上新增這兩個註解也可以實現專案啟動之前執行特定的方法
轉載於:https://my.oschina.net/mdxlcj/blog/1862479