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

SpringBoot實現(xiàn)啟動項目后立即執(zhí)行的方法總結(jié)

 更新時間:2023年05月26日 09:03:57   作者:JK凱  
在項目開發(fā)中某些場景必須要用到啟動項目后立即執(zhí)行方式的功能,所以這篇文章就來和大家聊聊實現(xiàn)立即執(zhí)行的幾種方法,希望對大家有所幫助

在項目開發(fā)中某些場景必須要用到啟動項目后立即執(zhí)行方式的功能,如我們需要去初始化數(shù)據(jù)到redis緩存,或者啟動后讀取相應(yīng)的字典配置等,這篇文章主要聊聊實現(xiàn)立即執(zhí)行的幾種方法。

一、CommandLineRunner和ApplicationRunner

這兩者的實現(xiàn)方法一樣,都是去繼承相應(yīng)的接口然后重寫run方法即可,也都是SpringBoot框架所提供給我們的接口,也是項目中最常用的,比較靈活,有多個

CommandLineRunner或ApplicationRunner實現(xiàn)類時可以通過@Order注解或?qū)崿F(xiàn)Ordered接口重寫getOrder方法實現(xiàn)按指定順序執(zhí)行

1.  CommandLineRunner的實現(xiàn)

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class CommandLineRunnerImpl implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("CommandLineRunnerImpl方法執(zhí)行");
    }
}

2.  ApplicationRunner的實現(xiàn)

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
public class ApplicationRunnerImpl implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("ApplicationRunner方法執(zhí)行");
    }

3.  多個CommandLineRunner或ApplicationRunner實現(xiàn)類時指定順序執(zhí)行

通過@Order注解指定,數(shù)字越小越先執(zhí)行

@Component
@Order(1) //通過order注解指定
public class ApplicationRunnerImpl implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("ApplicationRunner方法執(zhí)行");
    }
}

通過實現(xiàn)Ordered接口并重寫getOrder方法實現(xiàn),數(shù)字越小越先執(zhí)行

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;

@Component
public class ApplicationRunnerImpl implements ApplicationRunner, Ordered {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("ApplicationRunner方法執(zhí)行");
    }

    @Override
    public int getOrder() {
        return 1;
    }
}

4.CommandLineRunner或ApplicationRunner的不同

這兩者的不同其實就是run方法中所接收的參數(shù)類型不同,CommandLineRunner是對我們啟動jar包時所傳參數(shù)不進(jìn)行處理,原樣返回String類型給你,ApplicationRunner是封裝成了ApplicationArguments參數(shù),通過這個類型可以更方便的判斷某些參數(shù)是否存在之類的。

二、JDK所提供的@PostConstruct

@PostConstruct是JDK所提供的注解,使用該注解的方法會在服務(wù)器加載Servlet的時候運行。也可以在一個類中寫多個方法并添加這個注解。

import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class PostConstructTest {
    @PostConstruct
    public void start() {
        System.out.println("@PostConstruct方法執(zhí)行");
    }

    @PostConstruct
    public void start01() {
        System.out.println("@PostConstruct1111方法執(zhí)行");
    }
}

三、其他方法(不常用)

1. ApplicationContextAware

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class ApplicationContextAwareImpl implements ApplicationContextAware {
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        System.out.println("ApplicationContextAwareImpl方法執(zhí)行");
    }
}

2. ApplicationListener(會執(zhí)行多次)

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

@Component
public class ApplicationListenerImpl implements ApplicationListener {
    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        System.out.println("ApplicationListenerImpl方法執(zhí)行");
    }
}

3. InitializingBean

import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

@Component
public class InitializingBeanImpl implements InitializingBean {

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("InitializingBeanImpl方法執(zhí)行");
    }
}

這些方法也都可以實現(xiàn)在啟動項目后立即執(zhí)行,但是不太常用。

到此這篇關(guān)于SpringBoot實現(xiàn)啟動項目后立即執(zhí)行的方法總結(jié)的文章就介紹到這了,更多相關(guān)SpringBoot項目啟動后執(zhí)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的MapStruct知識點總結(jié)

    Java中的MapStruct知識點總結(jié)

    這篇文章主要介紹了Java中的MapStruct知識點總結(jié),MapStruct是一個Java注解處理器,用于生成類型安全的映射代碼,它可以自動處理源對象和目標(biāo)對象之間的映射,減少了手動編寫重復(fù)的映射代碼的工作量,需要的朋友可以參考下
    2023-10-10
  • 關(guān)于dubbo的RPC和RESTful性能及對比

    關(guān)于dubbo的RPC和RESTful性能及對比

    這篇文章主要介紹了關(guān)于dubbo的RPC和RESTful性能及對比,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 解析Java的Spring框架的基本結(jié)構(gòu)

    解析Java的Spring框架的基本結(jié)構(gòu)

    這篇文章主要介紹了Java的Spring框架的基本結(jié)構(gòu),作者從Spring的設(shè)計角度觸發(fā)解析其基礎(chǔ)的架構(gòu)內(nèi)容,需要的朋友可以參考下
    2016-03-03
  • Java如何從服務(wù)器中下載圖片

    Java如何從服務(wù)器中下載圖片

    這篇文章主要為大家詳細(xì)介紹了Java如何從服務(wù)器中下載圖片,代碼中附有詳細(xì)注釋,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Java的方法重載與變量作用域簡介

    Java的方法重載與變量作用域簡介

    這篇文章主要介紹了Java的方法重載與變量作用域,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • SpringData實現(xiàn)自定義Redis緩存的序列化機制和過期策略

    SpringData實現(xiàn)自定義Redis緩存的序列化機制和過期策略

    Spring Data Redis緩存通過提供靈活的配置選項,使開發(fā)者能夠根據(jù)業(yè)務(wù)需求自定義序列化方式和過期策略,下面就來具體介紹一下,感興趣的可以了解一下
    2025-04-04
  • Java中csv文件讀寫超詳細(xì)分析

    Java中csv文件讀寫超詳細(xì)分析

    CSV是一種通用的、相對簡單的文件格式,其文件以純文本形式存儲表格數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Java中csv文件讀寫分析的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Netty分布式高性能工具類recycler的使用及創(chuàng)建

    Netty分布式高性能工具類recycler的使用及創(chuàng)建

    這篇文章主要為大家介紹了Netty分布式高性能工具類recycler的使用和創(chuàng)建,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • SpringBoot中處理跨域請求CORS的全面指南

    SpringBoot中處理跨域請求CORS的全面指南

    跨域資源共享是一種安全機制,它允許Web應(yīng)用程序在一個域上的資源請求另一個域上的資源,下面就跟隨小編一起來深入了解下SpringBoot中處理跨域請求CORS的具體操作吧
    2025-04-04
  • Java selenium截圖操作的實現(xiàn)

    Java selenium截圖操作的實現(xiàn)

    這篇文章主要介紹了Java selenium截圖操作的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評論

民丰县| 鄂托克旗| 仁寿县| 高平市| 申扎县| 阳东县| 合江县| 潞城市| 辽宁省| 自治县| 常山县| 和硕县| 五莲县| 石嘴山市| 宁明县| 辽源市| 铜梁县| 曲松县| 彭泽县| 油尖旺区| 定远县| 慈利县| 景洪市| 清镇市| 昆明市| 上思县| 理塘县| 栖霞市| 太仓市| 如东县| 青浦区| 兰溪市| 台湾省| 宜宾市| 望江县| 鹿泉市| 申扎县| 湖州市| 卓尼县| 沭阳县| 紫云|