咱們在開發中可能會有這樣的情景。須要在容器啓動的時候執行一些內容。好比讀取配置文件,數據庫鏈接之類的。SpringBoot給咱們提供了兩個接口來幫助咱們實現這種需求。這兩個接口分別爲CommandLineRunner和ApplicationRunner。他們的執行時機爲容器啓動完成的時候。mysql
這兩個接口中有一個run方法,咱們只須要實現這個方法便可。這兩個接口的不一樣之處在於:ApplicationRunner中run方法的參數爲ApplicationArguments,而CommandLineRunner接口中run方法的參數爲String數組。下面我寫兩個簡單的例子,來看一下這兩個接口的實現。spring
具體代碼以下:sql
import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; /** * Created by zkn on 2016/8/12. */ @Component public class TestImplCommandLineRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("<<<<<<<<<<<<這個是測試CommandLineRunn接口>>>>>>>>>>>>>>"); } }
具體代碼以下:數據庫
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; /** * Created by zkn on 2016/8/12. * 注意:必定要有@Component這個註解。要否則SpringBoot掃描不到這個類,是不會執行。 */ @Component public class TestImplApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println(args); System.out.println("這個是測試ApplicationRunner接口"); } }
若是有多個實現類,而你須要他們按必定順序執行的話,能夠在實現類上加上@Order註解。@Order(value=整數值)。SpringBoot會按照@Order中的value值從小到大依次執行。數組
若是你發現你的實現類沒有按照你的需求執行,請看一下實現類上是否添加了Spring管理的註解(@Component)。ide