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

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

 更新時間:2023年08月11日 09:54:47   作者:Vegetable_xu  
這篇文章主要給大家介紹了關于Spring?Boot在啟動時執(zhí)行一次的功能實現(xiàn),在實習過程中,有時候會遇到一些項目啟動初始化的需求,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

方法一:@PostConstruct

此方法可能是最常用的

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

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

Constructor >> @Autowired >> @PostConstruct

例如,在一個Spring Boot應用程序的啟動類中添加一個@PostConstruct注解標記的方法:

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

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

此方法已經在項目中實踐使用ok。

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

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

如果需要多個操作在啟動時執(zhí)行,可以定義多個實現(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,分別是實現(xiàn)CommandLineRunner接口的MyCommandLineRunner和實現(xiàn)ApplicationRunner接口的MyApplicationRunner。它們的run()方法會在應用程序啟動后自動調用,可以在這里實現(xiàn)需要在啟動時執(zhí)行的操作。其中,@Order注解用于指定它們的執(zhí)行順序,數(shù)字越小越先執(zhí)行。

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

此方法暫未實踐

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

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

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

實現(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,并實現(xiàn)了ApplicationListener接口,用于監(jiān)聽ApplicationReadyEvent事件。在onApplicationEvent()方法中編寫需要在啟動時執(zhí)行的操作。最后通過@Component注解將MyApplicationListener注冊成Spring Bean。

當應用程序啟動完成后,MyApplicationListener會自動監(jiān)聽到ApplicationReadyEvent事件并執(zhí)行其中的代碼。可以在這里實現(xiàn)需要在啟動時執(zhí)行一次的操作,確保其只在應用程序啟動時執(zhí)行一次。

總結

到此這篇關于Spring Boot在啟動時執(zhí)行一次的功能實現(xiàn)的文章就介紹到這了,更多相關SpringBoot啟動時執(zhí)行一次內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • springboot整合druid連接池的步驟

    springboot整合druid連接池的步驟

    這篇文章主要介紹了springboot整合druid連接池的步驟,幫助大家更好的理解和學習springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • 將Java程序的輸出結果寫到txt文件中的方法

    將Java程序的輸出結果寫到txt文件中的方法

    今天小編就為大家分享一篇將Java程序的輸出結果寫到txt文件中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java 實戰(zhàn)項目之小說在線閱讀系統(tǒng)的實現(xiàn)流程

    Java 實戰(zhàn)項目之小說在線閱讀系統(tǒng)的實現(xiàn)流程

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)前臺閱讀后臺管理的小說在線閱讀系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • Java如何實現(xiàn)實體類轉Map、Map轉實體類

    Java如何實現(xiàn)實體類轉Map、Map轉實體類

    這篇文章主要介紹了Java 實現(xiàn)實體類轉Map、Map轉實體類的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 關于synchronized有趣的同步問題

    關于synchronized有趣的同步問題

    今天小編就為大家分享一篇關于關于synchronized有趣的同步問題,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • SSH 框架簡介

    SSH 框架簡介

    SSH是 struts+spring+hibernate的一個集成框架,是目前較流行的一種web應用程序開源框架。本文給大家詳細看一下組成SSH的這三個框架
    2017-09-09
  • 詳解Java編程中static關鍵字和final關鍵字的使用

    詳解Java編程中static關鍵字和final關鍵字的使用

    這篇文章主要介紹了詳解Java編程中static關鍵字和final關鍵字的使用,是Java入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • SpringBoot整合Shiro兩種方式(總結)

    SpringBoot整合Shiro兩種方式(總結)

    這篇文章主要介紹了SpringBoot整合Shiro兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • classloader類加載器_基于java類的加載方式詳解

    classloader類加載器_基于java類的加載方式詳解

    下面小編就為大家?guī)硪黄猚lassloader類加載器_基于java類的加載方式詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • SpringBoot中@Configuration和@Bean和@Component相同點詳解

    SpringBoot中@Configuration和@Bean和@Component相同點詳解

    這篇文章主要介紹了SpringBoot中@Configuration和@Bean和@Component相同點詳解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評論