国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot 啟動項目后執(zhí)行方法的幾種方式

這篇具有很好參考價值的文章主要介紹了SpringBoot 啟動項目后執(zhí)行方法的幾種方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

SpringBoot項目啟動后初始化執(zhí)行方法

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

一、CommandLineRunner

二、 ApplicationRunner

這兩者的實現(xiàn)方法一樣,都是去繼承相應(yīng)的接口然后重寫run方法即可,也都是SpringBoot框架所提供給我們的接口,也是項目中最常用的,比較靈活,有多個CommandLineRunnerApplicationRunner實現(xiàn)類時可以通過@Order注解或?qū)崿F(xiàn)Ordered接口重寫getOrder方法實現(xiàn)按指定順序執(zhí)行。

@Order(1) //通過order注解指定執(zhí)行順序
@Component
public class CommandLineRunnerInit implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("CommandLineRunner 啟動后執(zhí)行方法...");
    }
}

ApplicationRunner 通過order注解指定執(zhí)行順序

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

ApplicationRunner 通過實現(xiàn) Ordered 指定執(zhí)行順序

@Component
// 通過實現(xiàn) Ordered 指定執(zhí)行順序
public class ApplicationRunnerInit implements ApplicationRunner, Ordered {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("ApplicationRunner 啟動后執(zhí)行方法...");
    }

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

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

二、JDK提供的@PostConstruct

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

@Component
public class PostConstructTest {

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

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

三、其他方法

3.1 ApplicationContextAware

ApplicationContextAware 一般被用來獲取applicationContext上下文信息,并且也可以啟動時被執(zhí)行

@Component
public class ApplicationContextAwareTest implements ApplicationContextAware {

    private ApplicationContext applicationContext;

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

3.2 ApplicationListener

ApplicationListener 事件監(jiān)聽,啟動會執(zhí)行多個監(jiān)聽器【會多次執(zhí)行】,具體可了解Springboot服務(wù)啟動過程。

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

3.3 InitializingBean

InitializingBean 初始化啟動后方法執(zhí)行

@Component
public class InitializingBeanInit implements InitializingBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("InitializingBean 方法執(zhí)行...");
    }
}

四、總結(jié)

以上多種初始執(zhí)行方法日志輸出為:

ApplicationContextAware 方法執(zhí)行...
InitializingBean 方法執(zhí)行...
    
@PostConstruct 方法1執(zhí)行...
@PostConstruct 方法2執(zhí)行...

ApplicationListener 方法執(zhí)行...
ApplicationListener 方法執(zhí)行...
ApplicationListener 方法執(zhí)行...
ApplicationListener 方法執(zhí)行...
    
ApplicationRunner 啟動后執(zhí)行方法...
CommandLineRunner 啟動后執(zhí)行方法...
    
ApplicationListener 方法執(zhí)行...
ApplicationListener 方法執(zhí)行...

存在多個ApplicationRunner、CommandLineRunner可以通過order指定其執(zhí)行順序,但其執(zhí)行順序沒有ApplicationContextAware等高。但一般生產(chǎn)中使用ApplicationRunner、CommandLineRunner,因為其更加靈活。文章來源地址http://www.zghlxwxcb.cn/news/detail-672034.html

到了這里,關(guān)于SpringBoot 啟動項目后執(zhí)行方法的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【SpringBoot】 啟動后執(zhí)行方法的五種方式

    在 SpringBoot 工程 啟動后, 執(zhí)行方法的五種方式: 1、實現(xiàn) CommandLineRunner 接口 項目初始化完畢后,才會調(diào)用方法,提供服務(wù) 2、實現(xiàn) ApplicationRunner 接口 同 CommandLineRunner。只是傳參格式不一樣。CommandLineRunner:沒有任何限制;ApplicationRunner:key-value 3、實現(xiàn) ApplicationListener 接口

    2023年04月08日
    瀏覽(24)
  • python - 線程的啟動的幾種方式

    本文主要給大家介紹python啟動線程的四種方式 創(chuàng)建 Thread 對象,然后調(diào)用 start() 方法啟動線程。 重寫 run() 方法,并調(diào)用 start() 方法啟動線程。 使用ThreadPoolExecutor 類的 submit() 方法提交任務(wù),自動創(chuàng)建線程池并執(zhí)行任務(wù)。 創(chuàng)建進(jìn)程,然后在進(jìn)程中啟動線程。 以上就是python中啟

    2024年02月12日
    瀏覽(21)
  • MySQL運維02-MySQL執(zhí)行SQL文件的幾種方式

    對于這種方式,還可以查看文件執(zhí)行時的輸出,有如下兩種方法: 在MySQL服務(wù)器上執(zhí)行SQL文件,一種方法是可以通過mysql -e或者直接登錄mysql客戶端后,通過source命令執(zhí)行文件。另一種方法是將SQL文件作為mysql客戶端的輸入,即 mysql batch-file

    2024年02月11日
    瀏覽(24)
  • Linux下啟動jar包的幾種常見方式

    Linux下啟動jar包的幾種常見方式

    首先把這兩個jar上傳到linux ,會操作啟動一個應(yīng)用和同時啟動多個應(yīng)用 兩個項目jar已上傳,可去這里下載: https://download.csdn.net/download/zengzhaowu313/88411336 第一種、直接啟動 jar 包? ,先啟動一個應(yīng)用程序 ,后面操作啟動多個應(yīng)用 java -jar Test001.jar # 缺點:當(dāng)前 ssh 窗口會被鎖定,

    2024年02月05日
    瀏覽(19)
  • SpringBoot項目啟動后執(zhí)行指定方法的四種實現(xiàn)

    SpringBoot項目啟動后執(zhí)行指定方法的四種實現(xiàn)

    今日的好天氣 距離上一次更新帖子已經(jīng)過了很久很久,久到我也不知道我在搞什么飛機(jī)。 國慶節(jié)第一天終于搬到了新家,最近量子糾纏比較火,冬天也在路上,匆匆又一年。 @PostConstruct是Java自帶的注解,在方法上加該注解會在項目啟動的時候執(zhí)行該方法,也可以理解為在

    2023年04月15日
    瀏覽(18)
  • Unity——延時執(zhí)行的幾種方法

    延時執(zhí)行的函數(shù),可以自己設(shè)定延時要執(zhí)行的函數(shù)和具體延時的時間,是Monobehaviour基類中實現(xiàn)好的方法 在Update等刷新函數(shù)內(nèi)計時,timer += Time.deltaTime 當(dāng)時間達(dá)到預(yù)期,執(zhí)行需要延時的方法。需要注意的是,增量時間Time.deltaTime是每幀都不同的浮點數(shù)。計時器不能用 == 去判斷

    2024年02月11日
    瀏覽(23)
  • springboot接收參數(shù)的幾種方式

    springboot接收參數(shù)的幾種方式

    傳參格式:?號傳參,在地址欄上加參數(shù) 傳參格式:請求體傳參 form-data的請求是在body中,為key=value格式,同時可以傳文件,Content-Type為multipart/form-data,后端可以用@RequestParam接收。 json傳參也是在body當(dāng)中,只不過json是一種數(shù)據(jù)格式,后端可以用@RequestBody接收。 地址欄傳參,

    2024年02月10日
    瀏覽(23)
  • SpringBoot讀取配置的幾種方式

    SpringBoot讀取配置的幾種方式

    1.第一種@Value 注意:static和final修飾的變量不生效 2.通過@ConfigurationProperties(prefix=“”) ? 適用于對對象多個變量統(tǒng)一綁定,比@Value高效 3.通過Environment Spring底層提供的API動態(tài)獲取變量值 ? ?4.通過@PropertySources獲取外部文件路徑,再通過@Value獲取值? 只能讀取properties文件

    2024年02月15日
    瀏覽(25)
  • Android常用的延遲執(zhí)行任務(wù)及輪詢定時任務(wù)的幾種方式

    Executor 的 execute 方法:向線程池中提交任務(wù)(異步執(zhí)行) Executor 接口是 Java 并發(fā)編程中的一個接口,它定義了一種執(zhí)行任務(wù)的通用機(jī)制。Executor 接口有一個重要的方法 execute,它的作用是提交一個任務(wù)(Runnable 或 Callable)給 Executor 進(jìn)行執(zhí)行。 execute 方法的作用如下: 提交任務(wù):

    2024年04月25日
    瀏覽(15)
  • 玩轉(zhuǎn)SpringBoot:SpringBoot的幾種定時任務(wù)實現(xiàn)方式

    在現(xiàn)代軟件開發(fā)中,定時任務(wù)是一種常見的需求,用于執(zhí)行周期性的任務(wù)或在特定的時間點執(zhí)行任務(wù)。這些任務(wù)可能涉及數(shù)據(jù)同步、數(shù)據(jù)備份、報表生成、緩存刷新等方面,對系統(tǒng)的穩(wěn)定性和可靠性有著重要的影響。 Spring Boot 提供了強(qiáng)大且簡單的定時任務(wù)功能,使開發(fā)人員能

    2024年03月09日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包