從零搭建自己的SpringBoot後臺框架(十八)

Mr_初晨發表於2018-06-01
Hello大家好,本章我們新增專案啟動時初始化資源功能 。有問題可以聯絡我mr_beany@163.com。另求各路大神指點,感謝

在我們實際工作中,總會遇到這樣需求,在專案啟動的時候需要做一些初始化的操作,比如讀取配置檔案資訊,資料庫連線,清除快取資訊等。在Spring Boot中給我們提供了兩個介面來幫助我們實現這樣的需求。這兩個介面就是我們今天要講的CommandLineRunnerApplicationRunner,他們的執行時機為容器啟動完成的時候。

一:共同點和區別

共同點:其一執行時機都是在容器啟動完成的時候進行執行;其二這兩個介面中都有一個run()方法;  

不同點:ApplicationRunner中run方法的引數為ApplicationArguments,而CommandLineRunner介面中run方法的引數為String陣列。

二:使用ApplicationRunner來完成需求

建立core→startuprunner→StartupRunner1

package com.example.demo.core.startuprunner;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(value = 1)
public class StartupRunner1 implements ApplicationRunner {

    private static final Logger logger = LoggerFactory.getLogger(StartupRunner1.class);

    @Override
    public void run(ApplicationArguments var1) throws Exception{
        logger.info("伺服器啟動成功!<<<<使用ApplicationRunner介面");
    }
}複製程式碼

注意:需要新增@Component,不然SpringBoot掃描不到這個類,不會執行。

啟動伺服器,我們可以看見

從零搭建自己的SpringBoot後臺框架(十八)

三:使用CommandLineRunner來完成需求

建立core→startuprunner→StartupRunner2

package com.example.demo.core.startuprunner;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(value = -1)
public class StartupRunner2 implements CommandLineRunner {

    private static final Logger logger = LoggerFactory.getLogger(StartupRunner2.class);

    @Override
    public void run(String... args) throws Exception{
        logger.info("伺服器啟動成功!<<<<使用CommandLineRunner介面");
    }
}
複製程式碼

從零搭建自己的SpringBoot後臺框架(十八)

我們可以看見已經輸出成功,並且CommandLineRunner  在  ApplicationRunner  先執行

四:使用Order註解修改執行順序

如果有多個實現類,而我們需要按照一定的順序執行的話,那應該怎麼辦

解決方案:在實現類上加上@Order註解指定執行的順序

需要注意:數字越小,優先順序越高,也就是@Order(1)註解的類會在@Order(2)註解的類之前執行。

專案地址

碼雲地址: gitee.com/beany/mySpr…

GitHub地址: github.com/MyBeany/myS…

寫文章不易,如對您有幫助,請幫忙點下star從零搭建自己的SpringBoot後臺框架(十八)

結尾

新增專案啟動時初始化資源功能已完成,後續功能接下來陸續更新,有問題可以聯絡我mr_beany@163.com。另求各路大神指點,感謝大家。


相關文章