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

Spring Boot實(shí)現(xiàn)在啟動時執(zhí)行一次的功能

這篇具有很好參考價值的文章主要介紹了Spring Boot實(shí)現(xiàn)在啟動時執(zhí)行一次的功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

方法一:@PostConstruct

此方法可能是最常用的

可以使用Spring Boot的@PostConstruct注解來實(shí)現(xiàn)在啟動時執(zhí)行一次的功能。@PostConstruct注解標(biāo)記的方法會在Bean初始化完成后自動調(diào)用,可以在該方法中執(zhí)行只需要在啟動時執(zhí)行一次的操作。

如果想在生成對象時完成某些初始化操作,而偏偏這些初始化操作又依賴于依賴注入,那么就無法在構(gòu)造函數(shù)中實(shí)現(xiàn)。為此,可以使用@PostConstruct注解一個方法來完成初始化,@PostConstruct注解的方法將會在依賴注入完成后被自動調(diào)用。

Constructor >> @Autowired >> @PostConstruct

例如,在一個Spring Boot應(yīng)用程序的啟動類中添加一個@PostConstruct注解標(biāo)記的方法:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.annotation.PostConstruct;

@SpringBootApplication
public class MyApplication {

    @PostConstruct
    public void init() {
        // 在這里執(zhí)行僅需在啟動時執(zhí)行一次的操作
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在以上示例代碼中,init()方法被標(biāo)記為@PostConstruct注解,表示它會在MyApplication Bean初始化完成后自動調(diào)用。在init()方法中可以執(zhí)行只需要在啟動時執(zhí)行一次的操作,例如初始化一些數(shù)據(jù)、建立數(shù)據(jù)庫連接等。

方法二:使用Spring Boot提供的CommandLineRunner接口或ApplicationRunner接口

此方法已經(jīng)在項(xiàng)目中實(shí)踐使用ok。

除了@PostConstruct注解,還可以使用Spring Boot提供的CommandLineRunner接口或ApplicationRunner接口來實(shí)現(xiàn)在啟動時執(zhí)行一次的功能。

這兩個接口都有一個run()方法,在應(yīng)用程序啟動后會被自動調(diào)用。需要在該方法中實(shí)現(xiàn)需要在啟動時執(zhí)行的操作,例如初始化數(shù)據(jù)、開啟定時任務(wù)等。

如果需要多個操作在啟動時執(zhí)行,可以定義多個實(shí)現(xiàn)了CommandLineRunner或ApplicationRunner接口的Bean,并通過@Order注解指定它們的執(zhí)行順序。

示例代碼如下:

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(1) // 可以通過@Order注解指定執(zhí)行順序,數(shù)字越小越先執(zhí)行
public class MyCommandLineRunner implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        // 在這里執(zhí)行啟動時需要執(zhí)行的操作
    }
}

@Component
@Order(2)
public class MyApplicationRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        // 在這里執(zhí)行啟動時需要執(zhí)行的操作
    }
}

以上示例代碼定義了兩個Bean,分別是實(shí)現(xiàn)CommandLineRunner接口的MyCommandLineRunner和實(shí)現(xiàn)ApplicationRunner接口的MyApplicationRunner。它們的run()方法會在應(yīng)用程序啟動后自動調(diào)用,可以在這里實(shí)現(xiàn)需要在啟動時執(zhí)行的操作。其中,@Order注解用于指定它們的執(zhí)行順序,數(shù)字越小越先執(zhí)行。

方法三:使用Spring Boot提供的ApplicationListener接口

此方法暫未實(shí)踐

還可以使用Spring Boot提供的ApplicationListener接口來實(shí)現(xiàn)在應(yīng)用程序啟動時執(zhí)行一次的功能。這個接口定義了監(jiān)聽Spring Boot應(yīng)用程序事件的方法,當(dāng)應(yīng)用程序觸發(fā)相應(yīng)的事件時,監(jiān)聽器會自動調(diào)用相應(yīng)的方法進(jìn)行處理。

具體實(shí)現(xiàn)步驟如下:

創(chuàng)建一個實(shí)現(xiàn)ApplicationListener接口的類,例如MyApplicationListener。

實(shí)現(xiàn)onApplicationEvent()方法,在該方法中編寫需要在啟動時執(zhí)行的操作,例如初始化數(shù)據(jù)、建立數(shù)據(jù)庫連接等。

通過@Component注解或@Bean注解將MyApplicationListener注冊成Spring Bean。

示例代碼如下:

import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

@Component
public class MyApplicationListener implements ApplicationListener<ApplicationReadyEvent> {

    @Override
    public void onApplicationEvent(ApplicationReadyEvent event) {
        // 在這里執(zhí)行啟動時需要執(zhí)行的操作
    }
}

以上示例代碼創(chuàng)建了一個名為MyApplicationListener的Bean,并實(shí)現(xiàn)了ApplicationListener接口,用于監(jiān)聽ApplicationReadyEvent事件。在onApplicationEvent()方法中編寫需要在啟動時執(zhí)行的操作。最后通過@Component注解將MyApplicationListener注冊成Spring Bean。

當(dāng)應(yīng)用程序啟動完成后,MyApplicationListener會自動監(jiān)聽到ApplicationReadyEvent事件并執(zhí)行其中的代碼??梢栽谶@里實(shí)現(xiàn)需要在啟動時執(zhí)行一次的操作,確保其只在應(yīng)用程序啟動時執(zhí)行一次。文章來源地址http://www.zghlxwxcb.cn/news/detail-460754.html

到了這里,關(guān)于Spring Boot實(shí)現(xiàn)在啟動時執(zhí)行一次的功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Spring WebFlux 實(shí)現(xiàn)同一個方法在短時間內(nèi)只執(zhí)行一次

    要在 Spring WebFlux 中實(shí)現(xiàn)同一個方法在短時間內(nèi)只執(zhí)行一次,你可以使用一種常見的技術(shù),即通過限制并發(fā)訪問來保證只有一個請求能夠執(zhí)行。 以下是一種可能的實(shí)現(xiàn)方式: 使用 AtomicBoolean 進(jìn)行標(biāo)記:在你的方法中,聲明一個 AtomicBoolean 類型的變量,用于標(biāo)記方法是否已經(jīng)在

    2024年02月16日
    瀏覽(17)
  • 【Spring Boot】Spring Boot實(shí)現(xiàn)完整論壇功能示例代碼

    以下是一個簡單的Spring Boot論壇系統(tǒng)示例代碼: 首先是數(shù)據(jù)庫設(shè)計,我們創(chuàng)建以下幾張表: user表,存儲用戶信息,包括id、username、password、email、create_time等字段。 topic表,存儲帖子信息,包括id、title、content、user_id、create_time等字段。 comment表,存儲評論信息,包括id、con

    2024年02月11日
    瀏覽(28)
  • 月薪近萬,工地轉(zhuǎn)行測試,這一次的選擇,真正實(shí)現(xiàn)了薪資翻倍~

    月薪近萬,工地轉(zhuǎn)行測試,這一次的選擇,真正實(shí)現(xiàn)了薪資翻倍~

    有很多朋友在面臨轉(zhuǎn)行時都會有這樣一個問題,就是不知道自己是否能夠勝任,總是存在疑慮和害怕。 其實(shí)大部分人在轉(zhuǎn)行時都會有這個心態(tài),但事實(shí)上,很多時候,需要嘗試才知道自己究竟是否能夠成功。 小馬,從工地資料員,到成為一名軟件測試工程師,短短三個月,

    2024年02月02日
    瀏覽(23)
  • Spring Boot項(xiàng)目實(shí)現(xiàn)無數(shù)據(jù)庫啟動

    Spring Boot項(xiàng)目實(shí)現(xiàn)無數(shù)據(jù)庫啟動

    今天需要創(chuàng)建一個不連接數(shù)據(jù)庫的Spring Boot工程, 結(jié)果一切配置好后項(xiàng)目卻啟動失敗, 提示如下: 查詢了一下資料, 發(fā)現(xiàn)原來Spring Boot啟動時是默認(rèn)是要連接數(shù)據(jù)庫的, 這樣一來只需要把數(shù)據(jù)庫的一些配置排除掉就可以了: 重新啟動, 項(xiàng)目成功運(yùn)行了。另外, pom.xml文件中也不要引入

    2024年02月15日
    瀏覽(24)
  • 《劍指 Offer》專項(xiàng)突破版 - 面試題 4 : 只出現(xiàn)一次的數(shù)字(C++ 實(shí)現(xiàn))

    題目鏈接 :137. 只出現(xiàn)一次的數(shù)字 II - 力扣(LeetCode) 題目 : 輸入一個整數(shù)數(shù)組,數(shù)組中只有一個數(shù)字出現(xiàn)了一次,而其他數(shù)字都出現(xiàn)了 3 次。請找出那個只出現(xiàn)一次的數(shù)字。例如,如果輸入的數(shù)組為 [0, 1, 0, 1, 0, 1, 100],則只出現(xiàn)一次的數(shù)字是 100。 分析 : 這個題目有一個

    2024年02月02日
    瀏覽(19)
  • Spring Boot 實(shí)現(xiàn)審核功能,實(shí)戰(zhàn)來了!

    Spring Boot 實(shí)現(xiàn)審核功能,實(shí)戰(zhàn)來了!

    1、普通 方案 :經(jīng)辦時入A表,審核后從A表讀取數(shù)據(jù),然后操作目標(biāo)B表; 優(yōu)勢 :思路簡單 劣勢 :對后端功能實(shí)行高度的嵌入;審核功能數(shù)據(jù)操作不統(tǒng)一 2、彈框式 方案 :前臺實(shí)現(xiàn),操作時判斷是否需要權(quán)限控制,如果需要,則彈出框,由審核人員進(jìn)行審核,審核通過后,

    2024年02月08日
    瀏覽(20)
  • Java spring boot 實(shí)現(xiàn)批量刪除功能

    Java spring boot 實(shí)現(xiàn)批量刪除功能

    根據(jù)前面的刪除的功能的實(shí)現(xiàn),現(xiàn)在我們來實(shí)現(xiàn)一個可以批量刪除的功能,不懂刪除功能的可以跳到主頁去搜索Java刪除的功能即可,這里就不多進(jìn)行啰嗦,那么進(jìn)入正題! 原理: 批量刪除的原理是通過一個循環(huán)來遍歷要刪除的用戶信息的ID數(shù)組,然后依次調(diào)用單個刪除礦工

    2024年02月12日
    瀏覽(16)
  • Android前端+Spring Boot后端 登錄功能實(shí)現(xiàn)

    Android前端+Spring Boot后端 登錄功能實(shí)現(xiàn)

    創(chuàng)建項(xiàng)目后,自己添加包,框架如下 ? userController里的一些內(nèi)容,只供參考,代碼不全,無法實(shí)現(xiàn) 數(shù)據(jù)庫是直接在社區(qū)版IDEA里連接Mysql,在控制臺端創(chuàng)建的數(shù)據(jù)庫和user表,用于數(shù)據(jù)交互。 Activity包里是Activity Java類,主要響應(yīng)layout包里activity_login.xml等頁面布局內(nèi)的按鈕響應(yīng) a

    2024年02月12日
    瀏覽(23)
  • [Spring Boot]12 ElasticSearch實(shí)現(xiàn)分詞搜索功能

    [Spring Boot]12 ElasticSearch實(shí)現(xiàn)分詞搜索功能

    我們在使用搜索功能的時候,有時,為了使搜索的結(jié)果更多更廣,比如搜索字符串“領(lǐng)導(dǎo)力”,希望有這些組合的結(jié)果(領(lǐng)導(dǎo)力、領(lǐng)導(dǎo)、領(lǐng)、導(dǎo)、力)都要能夠全部展示出來。 這里我們引入ElasticSearch結(jié)合分詞插件,來實(shí)現(xiàn)這樣的搜索功能。 比如:一款app需要對“課程”進(jìn)行

    2024年02月03日
    瀏覽(21)
  • Spring Boot實(shí)訓(xùn)項(xiàng)目 瑞吉外賣功能實(shí)現(xiàn)

    Spring Boot實(shí)訓(xùn)項(xiàng)目 瑞吉外賣功能實(shí)現(xiàn)

    1 實(shí)訓(xùn)基本信息 1.1 實(shí)訓(xùn)項(xiàng)目名稱 “外賣點(diǎn)餐”系統(tǒng)。 1.2 實(shí)訓(xùn)時間及地點(diǎn) 2 實(shí)訓(xùn)內(nèi)容簡介 本項(xiàng)目(“外賣點(diǎn)餐”系統(tǒng))是專門為餐飲企業(yè)(餐廳、飯店)定制的-款軟件產(chǎn)品,包括系統(tǒng)管理后臺和移動端應(yīng)用兩部分。 其中系統(tǒng)管理后臺主要提供給餐飲企業(yè)內(nèi)部員工使用,可以對餐

    2024年02月07日
    瀏覽(60)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包