欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot項(xiàng)目啟動(dòng)時(shí)執(zhí)行指定的方法

 更新時(shí)間:2025年08月07日 10:41:20   作者:濤哥是個(gè)大帥比  
本文介紹了在SpringBoot項(xiàng)目中通過(guò)@PostConstruct注解和實(shí)現(xiàn)CommandLineRunner接口來(lái)在啟動(dòng)時(shí)執(zhí)行方法,具有一定的參考價(jià)值,感興趣的可以了解一下

項(xiàng)目場(chǎng)景:

本文介紹Spring Boot項(xiàng)目啟動(dòng)時(shí)執(zhí)行指定的方法兩種常用方式和他們之間的區(qū)別。

實(shí)現(xiàn)方案:

方式一:使用注解@PostConstruct

@Component
public class PostConstructTest {
    @PostConstruct
    public void postConstruct() {
		System.out.println("啟動(dòng)時(shí)自動(dòng)執(zhí)行  @PostConstruct 注解方法");
    }
}

優(yōu)點(diǎn): 簡(jiǎn)單方便,加上一個(gè)注解就行了。

缺點(diǎn):如果@PostConstruct方法內(nèi)的邏輯處理時(shí)間較長(zhǎng),就會(huì)增加SpringBoot應(yīng)用初始化Bean的時(shí)間,進(jìn)而增加應(yīng)用啟動(dòng)的時(shí)間。因?yàn)橹挥性贐ean初始化完成后,SpringBoot應(yīng)用才會(huì)打開(kāi)端口提供服務(wù),所以在此之前,應(yīng)用不可訪問(wèn)。

建議:輕量的邏輯可放在Bean的@PostConstruct方法中,耗時(shí)長(zhǎng)的邏輯如果放在@PostConstruct方法中,可使用@Async異步方法。

使用異步代碼示例:

@Service
public class TestService {
 
    @Async("testAsync")  //指定線程池
    public void test() {
        System.out.println("------------------------異步方法開(kāi)始 " + Thread.currentThread().getName());
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("----------------異步方法執(zhí)行完了" + Thread.currentThread().getName());
    }
}
@Component
public class PostConstructTest {

	@Autowired
    private TestService testService;
	
    @PostConstruct
    public void postConstruct() {
		System.out.println("啟動(dòng)時(shí)自動(dòng)執(zhí)行  @PostConstruct 注解方法");
		testService.test();
    }
}

Spring Boot中多個(gè)PostConstruct注解執(zhí)行順序控制

方式二:實(shí)現(xiàn)CommandLineRunner接口

@Component
public class CommandLineRunnerImpl implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
		System.out.println("啟動(dòng)時(shí)自動(dòng)執(zhí)行 CommandLineRunner 的 run 方法");
    }
}

優(yōu)點(diǎn): 項(xiàng)目已經(jīng)初始化完畢,才會(huì)執(zhí)行方法,所以不用等這個(gè)方法執(zhí)行完,就可以正常提供服務(wù)了。

缺點(diǎn):暫未發(fā)現(xiàn)。

到此這篇關(guān)于SpringBoot項(xiàng)目啟動(dòng)時(shí)執(zhí)行指定的方法的文章就介紹到這了,更多相關(guān)SpringBoot項(xiàng)目啟動(dòng)時(shí)執(zhí)行指定內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java性能的十一個(gè)用法分享

    Java性能的十一個(gè)用法分享

    這篇文章主要介紹了Java性能的十一個(gè)用法,需要的朋友可以參考下
    2014-10-10
  • Spring?Bean注冊(cè)與注入實(shí)現(xiàn)方法詳解

    Spring?Bean注冊(cè)與注入實(shí)現(xiàn)方法詳解

    首先,要學(xué)習(xí)Spring中的Bean的注入方式,就要先了解什么是依賴注入。依賴注入是指:讓調(diào)用類(lèi)對(duì)某一接口的實(shí)現(xiàn)類(lèi)的實(shí)現(xiàn)類(lèi)的依賴關(guān)系由第三方注入,以此來(lái)消除調(diào)用類(lèi)對(duì)某一接口實(shí)現(xiàn)類(lèi)的依賴。Spring容器中支持的依賴注入方式主要有屬性注入、構(gòu)造函數(shù)注入、工廠方法注入
    2022-10-10
  • 圖解Java?ReentrantLock的條件變量Condition機(jī)制

    圖解Java?ReentrantLock的條件變量Condition機(jī)制

    想必大家都使用過(guò)wait()和notify()這兩個(gè)方法把,他們主要用于多線程間的協(xié)同處理。而RenentrantLock也支持這樣條件變量的能力,而且相對(duì)于synchronized?更加強(qiáng)大,能夠支持多個(gè)條件變量,本文就來(lái)詳細(xì)說(shuō)說(shuō)
    2022-10-10
  • Java多線程之并發(fā)編程的核心AQS詳解

    Java多線程之并發(fā)編程的核心AQS詳解

    AQS ( AbstractQueuedSynchronizer)是一個(gè)用來(lái)構(gòu)建鎖和同步器的框架,使用AQS能簡(jiǎn)單且高效地構(gòu)造出應(yīng)用廣泛的大量的同步器,下面小編和大家來(lái)一起學(xué)習(xí)一下吧
    2021-09-09
  • java多線程詳細(xì)總結(jié)

    java多線程詳細(xì)總結(jié)

    以下小編就對(duì)java中的多線程進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • Java全面解析ttf字體的信息

    Java全面解析ttf字體的信息

    文章介紹了Java如何解析TTF字體文件,提取字體的基本信息、版本信息、版權(quán)和許可證、字符映射以及各種表格信息,通過(guò)代碼解析,可以獲取字體的詳細(xì)描述和度量數(shù)據(jù)
    2025-01-01
  • SpringBoot?使用?Sa-Token?完成注解鑒權(quán)功能(權(quán)限校驗(yàn))

    SpringBoot?使用?Sa-Token?完成注解鑒權(quán)功能(權(quán)限校驗(yàn))

    Sa-Token?是一個(gè)輕量級(jí)?java?權(quán)限認(rèn)證框架,主要解決登錄認(rèn)證、權(quán)限認(rèn)證、單點(diǎn)登錄、OAuth2、微服務(wù)網(wǎng)關(guān)鑒權(quán)?等一系列權(quán)限相關(guān)問(wèn)題,這篇文章主要介紹了SpringBoot使用Sa-Token完成注解鑒權(quán)功能,需要的朋友可以參考下
    2023-05-05
  • Spring常見(jiàn)錯(cuò)誤之Web嵌套對(duì)象校驗(yàn)失效解決辦法

    Spring常見(jiàn)錯(cuò)誤之Web嵌套對(duì)象校驗(yàn)失效解決辦法

    這篇文章主要介紹了Spring常見(jiàn)錯(cuò)誤之Web嵌套對(duì)象校驗(yàn)失效解決的相關(guān)資料,通過(guò)在Phone對(duì)象上添加@Valid注解,問(wèn)題得以解決,需要的朋友可以參考下
    2025-01-01
  • Springboot集成Jasypt實(shí)現(xiàn)配置文件加密的方法

    Springboot集成Jasypt實(shí)現(xiàn)配置文件加密的方法

    Jasypt是一個(gè)java庫(kù),它允許開(kāi)發(fā)員以最少的努力為他/她的項(xiàng)目添加基本的加密功能,并且不需要對(duì)加密工作原理有深入的了解,這篇文章主要介紹了Springboot集成Jasypt實(shí)現(xiàn)配置文件加密,需要的朋友可以參考下
    2023-04-04
  • Java中的Map允許有重復(fù)元素嗎?

    Java中的Map允許有重復(fù)元素嗎?

    今天小編就為大家分享一篇關(guān)于Java中的Map允許有重復(fù)元素嗎?,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02

最新評(píng)論