最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot應(yīng)用啟動(dòng)時(shí)自動(dòng)執(zhí)行代碼的五種方式(常見(jiàn)方法)

 更新時(shí)間:2024年04月10日 12:05:21   作者:不掉頭發(fā)的阿水  
Spring Boot為開(kāi)發(fā)者提供了多種方式在應(yīng)用啟動(dòng)時(shí)執(zhí)行自定義代碼,這些方式包括注解、接口實(shí)現(xiàn)和事件監(jiān)聽(tīng)器,本文我們將探討一些常見(jiàn)的方法,以及如何利用它們?cè)趹?yīng)用啟動(dòng)時(shí)執(zhí)行初始化邏輯,感興趣的朋友一起看看吧

Spring Boot為開(kāi)發(fā)者提供了多種方式在應(yīng)用啟動(dòng)時(shí)執(zhí)行自定義代碼,這些方式包括注解、接口實(shí)現(xiàn)和事件監(jiān)聽(tīng)器。在本篇博客中,我們將探討一些常見(jiàn)的方法,以及如何利用它們?cè)趹?yīng)用啟動(dòng)時(shí)執(zhí)行初始化邏輯。

1.  @PostConstruct注解

`@PostConstruct`注解可以標(biāo)注在方法上,該方法將在類(lèi)被初始化后調(diào)用。在Spring Boot應(yīng)用中,你可以使用這個(gè)注解來(lái)執(zhí)行一些初始化的邏輯。

@PostConstruct
public void doSomething(){
    // 在應(yīng)用啟動(dòng)后執(zhí)行的代碼
    System.out.println("do something");
}

2.  ApplicationListener接口

實(shí)現(xiàn)`ApplicationListener`接口并監(jiān)聽(tīng)`ApplicationStartedEvent`事件,這樣你的邏輯將在應(yīng)用啟動(dòng)后被觸發(fā)。

import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
public class MyApplicationListener implements ApplicationListener<ApplicationStartedEvent> {
    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        // 在應(yīng)用啟動(dòng)后執(zhí)行的代碼
        System.out.println("ApplicationListener executed");
    }
}

 3.  @EventListener注解

使用`@EventListener`注解,可以將方法標(biāo)記為事件監(jiān)聽(tīng)器,并在特定事件發(fā)生時(shí)執(zhí)行。

import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.event.EventListener;
public class MyEventListener {
    @EventListener(ApplicationStartedEvent.class)
    public void onApplicationEvent() {
        // 在應(yīng)用啟動(dòng)后執(zhí)行的代碼
        System.out.println("@EventListener executed");
    }
}

4.  ApplicationRunner接口

實(shí)現(xiàn)`ApplicationRunner`接口,該接口的`run`方法會(huì)在Spring Boot應(yīng)用啟動(dòng)后執(zhí)行。

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
public class MyApplicationRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        // 在應(yīng)用啟動(dòng)后執(zhí)行的代碼
        System.out.println("ApplicationRunner executed");
    }
}

5.  CommandLineRunner接口

與`ApplicationRunner`類(lèi)似,`CommandLineRunner`接口的`run`方法也在應(yīng)用啟動(dòng)后執(zhí)行。

public class MyCommandLineRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        // 在應(yīng)用啟動(dòng)后執(zhí)行的代碼
        System.out.println("CommandLineRunner executed");
    }
}

Demo代碼

 完整如下

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.EventListener;
import javax.annotation.PostConstruct;
@SpringBootApplication
public class Application implements
        ApplicationListener<ApplicationStartedEvent>,
        CommandLineRunner,
        ApplicationRunner
{
    /**
     * 本次執(zhí)行先后順序?yàn)椋](méi)有設(shè)置order)
     * PostConstruct、ApplicationListener、@EventListener注解、ApplicationRunner、CommandLineRunner
     * @param args
     */
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
    @PostConstruct
    public void doSomething(){
        // 在應(yīng)用啟動(dòng)后執(zhí)行的代碼
        System.out.println("do something 11111111111");
        System.out.println("PostConstruct注解啟動(dòng)");
        System.out.println("===============");
    }
    @EventListener(ApplicationStartedEvent.class)
    public void onApplicationEvent() {
        // 在應(yīng)用啟動(dòng)后執(zhí)行的代碼
        System.out.println("do something 22222222222");
        System.out.println("@EventListener 注解啟動(dòng) executed");
        System.out.println("===============");
    }
    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        // 在應(yīng)用啟動(dòng)后執(zhí)行的代碼
        System.out.println("do something 3333333333");
        System.out.println("ApplicationListener executed");
        System.out.println("===============");
    }
    @Override
    public void run(String... args) throws Exception {
        // 在應(yīng)用啟動(dòng)后執(zhí)行的代碼
        System.out.println("do something 44444444");
        System.out.println("CommandLineRunner啟動(dòng)");
        System.out.println("===============");
    }
    @Override
    public void run(ApplicationArguments args) throws Exception {
        // 在應(yīng)用啟動(dòng)后執(zhí)行的代碼
        System.out.println("do something 55555555");
        System.out.println("ApplicationRunner啟動(dòng)");
        System.out.println("===============");
    }
}

Demo分析

@PostConstruct注解方法 (doSomething方法) 在類(lèi)初始化后被調(diào)用,因此會(huì)首先輸出。

ApplicationListener接口方法 (onApplicationEvent方法) 在應(yīng)用啟動(dòng)后執(zhí)行,會(huì)輸出其相關(guān)的信息。

@EventListener注解方法 (onApplicationEvent方法) 同樣在應(yīng)用啟動(dòng)后執(zhí)行,會(huì)輸出其相關(guān)的信息。

ApplicationRunner接口方法 (run方法) 在ApplicationListener之后執(zhí)行,它用于在Spring Boot應(yīng)用啟動(dòng)后執(zhí)行一些額外的邏輯。

CommandLineRunner接口方法 (run方法) 也在ApplicationListener之后執(zhí)行,用于在Spring Boot應(yīng)用啟動(dòng)后執(zhí)行一些額外的邏輯。

總結(jié)

通過(guò)以上幾種方式,你可以根據(jù)項(xiàng)目的需求選擇合適的初始化方法。無(wú)論是使用注解、接口實(shí)現(xiàn),還是事件監(jiān)聽(tīng)器,Spring Boot提供了靈活的機(jī)制來(lái)管理應(yīng)用啟動(dòng)時(shí)的自定義邏輯,使得開(kāi)發(fā)者能夠更方便地控制應(yīng)用的初始化過(guò)程。在實(shí)際項(xiàng)目中,通常根據(jù)具體場(chǎng)景選擇其中一種或多種方式,以滿(mǎn)足不同的需求。

到此這篇關(guān)于Spring Boot應(yīng)用啟動(dòng)時(shí)自動(dòng)執(zhí)行代碼的五種方式(常見(jiàn)方法)的文章就介紹到這了,更多相關(guān)Spring Boot啟動(dòng)時(shí)自動(dòng)執(zhí)行代碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Hibernate實(shí)現(xiàn)many-to-many的映射關(guān)系

    Hibernate實(shí)現(xiàn)many-to-many的映射關(guān)系

    今天小編就為大家分享一篇關(guān)于Hibernate實(shí)現(xiàn)many-to-many的映射關(guān)系,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Java異常監(jiān)控(監(jiān)控利器)

    Java異常監(jiān)控(監(jiān)控利器)

    這篇文章給大家介紹Java異常監(jiān)控(監(jiān)控利器)的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-03-03
  • Java中調(diào)用SQL Server存儲(chǔ)過(guò)程詳解

    Java中調(diào)用SQL Server存儲(chǔ)過(guò)程詳解

    這篇文章主要介紹了Java中調(diào)用SQL Server存儲(chǔ)過(guò)程詳解,本文講解了使用不帶參數(shù)的存儲(chǔ)過(guò)程、使用帶有輸入?yún)?shù)的存儲(chǔ)過(guò)程、使用帶有輸出參數(shù)的存儲(chǔ)過(guò)程、使用帶有返回狀態(tài)的存儲(chǔ)過(guò)程、使用帶有更新計(jì)數(shù)的存儲(chǔ)過(guò)程等操作實(shí)例,需要的朋友可以參考下
    2015-01-01
  • MyBatis的foreach語(yǔ)句詳解

    MyBatis的foreach語(yǔ)句詳解

    這篇文章主要介紹了MyBatis的foreach語(yǔ)句詳解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • Java關(guān)于JDK1.8新特性的Stream流

    Java關(guān)于JDK1.8新特性的Stream流

    這篇文章主要介紹了版本薇JDK1.8 的Java中的Stream流,Stream流是一個(gè)來(lái)自數(shù)據(jù)源的元素隊(duì)列并支持聚合操作,感興趣的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • Java中注解的工作原理

    Java中注解的工作原理

    什么是注解?用一個(gè)詞就可以描述注解,那就是元數(shù)據(jù),即一種描述數(shù)據(jù)的數(shù)據(jù),Java中的注解是如何工作的,需要的朋友可以參考下
    2015-12-12
  • spring boot中xalan引入報(bào)錯(cuò)系統(tǒng)找不到指定的文件原因分析

    spring boot中xalan引入報(bào)錯(cuò)系統(tǒng)找不到指定的文件原因分析

    這篇文章主要介紹了spring boot中xalan引入報(bào)錯(cuò)系統(tǒng)找不到指定的文件,主要原因是內(nèi)嵌的tomcat9.0.36,本文給大家分享最新解決方法,需要的朋友可以參考下
    2023-08-08
  • java線(xiàn)程本地變量ThreadLocal詳解

    java線(xiàn)程本地變量ThreadLocal詳解

    ThreadLocal則為每一個(gè)線(xiàn)程提供了一個(gè)變量副本,從而隔離了多個(gè)線(xiàn)程訪(fǎng)問(wèn)數(shù)據(jù)的沖突,ThreadLocal提供了線(xiàn)程安全的對(duì)象封裝,下面我們就來(lái)詳細(xì)了解一下吧
    2019-06-06
  • SpringCloud Eureka搭建的方法步驟

    SpringCloud Eureka搭建的方法步驟

    這篇文章主要介紹了SpringCloud Eureka搭建的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 深入探究一下Java中不同的線(xiàn)程間數(shù)據(jù)通信方式

    深入探究一下Java中不同的線(xiàn)程間數(shù)據(jù)通信方式

    這篇文章主要來(lái)和大家一起深入探究一下Java中不同的線(xiàn)程間數(shù)據(jù)通信方式,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2023-04-04

最新評(píng)論

南溪县| 岱山县| 连南| 永登县| 莱西市| 涞水县| 长白| 新平| 安平县| 正定县| 清河县| 微山县| 东兴市| 子长县| 棋牌| 英德市| 潢川县| 汽车| 藁城市| 元谋县| 和静县| 五家渠市| 恩平市| 宜州市| 乐清市| 中超| 新源县| 黄大仙区| 平度市| 施甸县| 寿阳县| 剑河县| 颍上县| 郴州市| 磴口县| 城固县| 赤峰市| 文山县| 漳浦县| 茌平县| 延安市|