spring boot項(xiàng)目啟動(dòng)時(shí)如何初始化你想要的資源?

spring boot項(xiàng)目啟動(dòng)時(shí)如何初始化你想要的資源?

我們?cè)趯?shí)際的開(kāi)發(fā)當(dāng)中,不同的項(xiàng)目會(huì)有不同的需求,有時(shí)候我們?cè)趩?dòng)項(xiàng)目的時(shí)候需要做一些初始化的操作,那么你知道怎么更加便捷的去初始化這些資源呢?

首先,我們?cè)趕pring boot的啟動(dòng)類上,加上兩句話,使項(xiàng)目在啟動(dòng)的時(shí)候控制臺(tái)會(huì)輸出信息,我們看看項(xiàng)目的啟動(dòng)順序是什么?

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        System.out.println("start");
        SpringApplication.run(DemoApplication.class, args);
        System.out.println("Has already started;");
    }
}

然后我們創(chuàng)建一個(gè)類RunnerLoading實(shí)現(xiàn)CommandLineRunner接口:

@Component
public class RunnerLoading implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("When will I start to implement it?");
    }
}

現(xiàn)在開(kāi)始啟動(dòng)項(xiàng)目,看看會(huì)出現(xiàn)什么結(jié)果呢?

image.png

根據(jù)控制臺(tái)的打印信息我們可以看出 CommandLineRunner 中的方法會(huì)在 Spring Boot 容器加載之后,在項(xiàng)目啟動(dòng)完成之前執(zhí)行

如果我們?cè)趩?dòng)容器的時(shí)候需要初始化很多資源,并且初始化資源相互之間有序,那如何保證不同的 CommandLineRunner 的執(zhí)行順序呢?那就是使用 @Order 注解。
我們?cè)賱?chuàng)建兩個(gè)類進(jìn)行測(cè)試:

@Component
@Order(1)
public class Runner1 implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("我應(yīng)該是初始化資源第一名");
    }
}
@Component
@Order(2)
public class Runner2 implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("我應(yīng)該是初始化資源第二名");
    }
}

啟動(dòng)項(xiàng)目,看看執(zhí)行結(jié)果:

image.png

通過(guò)控制臺(tái)的輸出我們發(fā)現(xiàn),添加 @Order 注解的實(shí)現(xiàn)類要先執(zhí)行,并且@Order()里面的值越小啟動(dòng)越早,可以修改@Order()里面的值進(jìn)行有順序的初始化資源,你學(xué)會(huì)了嗎?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容