《SpringBoot2.X心法總綱》mysql
(本篇博客已於2019-08-28 優化更新)redis
場景:證券、基金部分公司在本身業務活動項目啓動以前都會將數據提早加載到redis中.sql
CommandLineRunner 接口的Component 會在全部Spring Beans都初始化以後,SpringApplication.run()以前執行,很是適合在應用程序啓動之初進行一些數據初始化的工做,ApplicationRunner爲另一種初始化方法緩存
@Component public class MjtRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("在這個方法裏能夠初始化數據,加載數據到緩存redis"); } }
若是咱們須要將mysql等數據提早加載到redis中,能夠實現這個類重寫run方法。服務器
在啓動類上添加驗證啓動順序ide
@SpringBootApplication public class Spring5Application { public static void main(String[] args) { System.out.println("111"); SpringApplication.run(Spring5Application.class, args); System.out.println("2222"); } }
只添加兩行輸出結果,啓動以後,如圖函數
在類上添加@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"); } }
這樣初始化的順序就是從小到大的順序執行。優化
@PostConstruct修飾的方法會在服務器加載Servle的時候運行,而且只會被服務器執行一次。PostConstruct在構造函數以後執行,init()方法以前執行。@PreDestroy()方法在destroy()方法執行執行以後執行,在方法上添加這兩個註解也能夠實現項目啓動以前執行特定的方法。