SpringBoot之CommandLineRunner接口和ApplicationRunner接口

咱們在開發中可能會有這樣的情景。須要在容器啓動的時候執行一些內容。好比讀取配置文件,數據庫鏈接之類的。SpringBoot給咱們提供了兩個接口來幫助咱們實現這種需求。這兩個接口分別爲CommandLineRunner和ApplicationRunner。他們的執行時機爲容器啓動完成的時候spring

這兩個接口中有一個run方法,咱們只須要實現這個方法便可。這兩個接口的不一樣之處在於:ApplicationRunner中run方法的參數爲ApplicationArguments,而CommandLineRunner接口中run方法的參數爲String數組。下面我寫兩個簡單的例子,來看一下這兩個接口的實現。數據庫

CommandLineRunner

具體代碼以下:

數組

package com.zkn.learnspringboot.runner;
 
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接口>>>>>>>>>>>>>>");
    }
}
執行結果爲:

ApplicationRunner接口

具體代碼以下:
package com.zkn.learnspringboot.runner;
 
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接口");
    }
}

執行結果以下:springboot

@Order註解

若是有多個實現類,而你須要他們按必定順序執行的話,能夠在實現類上加上@Order註解。@Order(value=整數值)。SpringBoot會按照@Order中的value值從小到大依次執行。ide

Tips

若是你發現你的實現類沒有按照你的需求執行,請看一下實現類上是否添加了Spring管理的註解(@Component)。

測試

相關文章
相關標籤/搜索