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

springboot啟動(dòng)加載CommandLineRunner @PostConstruct問(wèn)題

 更新時(shí)間:2024年08月20日 10:15:49   作者:大旭123456  
這篇文章主要介紹了springboot啟動(dòng)加載CommandLineRunner @PostConstruct問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot 啟動(dòng)加載

CommandLineRunner

在項(xiàng)目中,經(jīng)常有這樣的需求,我們需要在項(xiàng)目啟動(dòng)完立即初始化一些數(shù)據(jù)(比如緩存等),以便后面調(diào)用使用。spring boot可以通過(guò)CommandLineRunner接口實(shí)現(xiàn)啟動(dòng)加載功能。

新建一個(gè)Java文件,類需要用Component聲明下,需要實(shí)現(xiàn)CommandLineRunner接口,然后重寫(xiě)run方法,在run方法內(nèi)編寫(xiě)需要加載的內(nèi)容。

代碼如下:

package com.study.test.startup;

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

/**
 * @Description: 初始化啟動(dòng)類
 * @Author: chen
 * @Date: Created in 2019/2/22
 */
@Component
public class InitStarter implements CommandLineRunner{

    @Override
    public void run(String... args) throws Exception {
        System.out.println("CommandLineRunner example start");
    }
}

啟動(dòng)項(xiàng)目,運(yùn)行結(jié)果證明:CommandLineRunner會(huì)在服務(wù)啟動(dòng)之后被立即執(zhí)行

在項(xiàng)目中,我們可以寫(xiě)一個(gè)類繼承CommandLineRunner接口,然后在實(shí)現(xiàn)方法中寫(xiě)多個(gè)需要加載的方法,也可以寫(xiě)多個(gè)類繼承CommandLineRunner,這些類之間,可以通過(guò)order注解(@Order(value=1))實(shí)現(xiàn)先后順序。

例子如下:

總結(jié):

  • CommandLineRunner會(huì)在服務(wù)啟動(dòng)之后被立即執(zhí)行。
  • CommandLineRunner可以有多個(gè),且多個(gè)直接可以用order注解進(jìn)行排序。

@PostConstruct

另一個(gè)需求是,在類加載的時(shí)候,為當(dāng)前類初始化一些數(shù)據(jù),那么可以使用@PostConstruct注解。

Servlet中增加了兩個(gè)影響Servlet生命周期的注解,@PostConstruct和@PreDestroy,這兩個(gè)注解被用來(lái)修飾一個(gè)非靜態(tài)的void()方法。

在一個(gè)類內(nèi),如果有構(gòu)造器(Constructor ),有@PostConstruct,還有@Autowired,他們的先后執(zhí)行順序?yàn)镃onstructor >> @Autowired >> @PostConstruct。

因?yàn)橐粋€(gè)有聲明注解的類文件(必須有聲明,這樣在項(xiàng)目初始化時(shí)候才會(huì)注入),在項(xiàng)目啟動(dòng)后,會(huì)對(duì)對(duì)象進(jìn)行依賴注入,而初始化的動(dòng)作會(huì)依賴于對(duì)象,所以假象上看,也類似于項(xiàng)目啟動(dòng)就會(huì)執(zhí)行的操作,因此,我們也可以通過(guò)這樣的形式,對(duì)數(shù)據(jù)進(jìn)行初始化。

說(shuō)明一下:

@PostConstruct更針對(duì)性于當(dāng)前類文件,而CommandLineRunner更服務(wù)于整個(gè)項(xiàng)目。所以在我們使用中,可根據(jù)自己的使用場(chǎng)景來(lái)進(jìn)行選擇用這兩種方式來(lái)實(shí)現(xiàn)初始化。

package com.study.test.postConstruct;

import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * @Description:
 * @Author: chen
 * @Date: Created in 2019/2/25
 */
@Component
public class Init {

    @PostConstruct
    private void init(){
        System.out.println("PostConstruct 注解 初始化數(shù)據(jù).");
    }
}

執(zhí)行結(jié)果:

說(shuō)明一下:

執(zhí)行結(jié)果可以看到,在項(xiàng)目還沒(méi)有啟動(dòng)成功的時(shí)候,@PostConstruct已經(jīng)執(zhí)行完了,因?yàn)锧PostConstruct是在Init類注入完成后立馬執(zhí)行的,它并不依賴于項(xiàng)目的啟動(dòng)。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • datatables 帶查詢條件java服務(wù)端分頁(yè)處理實(shí)例

    datatables 帶查詢條件java服務(wù)端分頁(yè)處理實(shí)例

    本篇文章主要介紹了datatables 帶查詢條件java服務(wù)端分頁(yè)處理實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • spring整合struts2過(guò)程詳解

    spring整合struts2過(guò)程詳解

    這篇文章主要介紹了spring整合struts2過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Resty開(kāi)發(fā)restful版本的Jfinal深入研究

    Resty開(kāi)發(fā)restful版本的Jfinal深入研究

    這篇文章主要為大家介紹了Resty開(kāi)發(fā)restful版本的Jfinal深入研究有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Java中Json與List、Map、entity的互相轉(zhuǎn)化

    Java中Json與List、Map、entity的互相轉(zhuǎn)化

    在開(kāi)發(fā)中,Json轉(zhuǎn)換的場(chǎng)景往往也就是那么幾個(gè),本文主要介紹了Java中Json與List、Map、entity的互相轉(zhuǎn)化,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-07-07
  • Java利用redis zset實(shí)現(xiàn)延時(shí)任務(wù)詳解

    Java利用redis zset實(shí)現(xiàn)延時(shí)任務(wù)詳解

    zset作為redis的有序集合數(shù)據(jù)結(jié)構(gòu)存在,排序的依據(jù)就是score。本文就將利用zset score這個(gè)排序的這個(gè)特性,來(lái)實(shí)現(xiàn)延時(shí)任務(wù),感興趣的可以了解一下
    2022-08-08
  • Java Thread之Sleep()使用方法總結(jié)

    Java Thread之Sleep()使用方法總結(jié)

    這篇文章主要介紹了Java Thread之Sleep()使用方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Java內(nèi)存各部分OOM出現(xiàn)原因及解決方法(必看)

    Java內(nèi)存各部分OOM出現(xiàn)原因及解決方法(必看)

    下面小編就為大家?guī)?lái)一篇Java內(nèi)存各部分OOM出現(xiàn)原因及解決方法(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • Spring Cloud Config工作原理概述

    Spring Cloud Config工作原理概述

    Spring Cloud Config 是 Spring Cloud 生態(tài)系統(tǒng)的一部分,它提供了一種集中化管理應(yīng)用配置的方法,本文給大家介紹Spring Cloud Config工作原理概述,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Java8中常見(jiàn)函數(shù)式接口的使用示例詳解

    Java8中常見(jiàn)函數(shù)式接口的使用示例詳解

    在 Java 8 中,函數(shù)式接口是一個(gè)關(guān)鍵的特性,它們?cè)试S將方法作為參數(shù)傳遞或返回類型,本文為大家整理了一些常見(jiàn)的函數(shù)式接口的使用,希望對(duì)大家有所幫助
    2023-12-12
  • 詳細(xì)聊聊RabbitMQ竟無(wú)法反序列化List問(wèn)題

    詳細(xì)聊聊RabbitMQ竟無(wú)法反序列化List問(wèn)題

    這篇文章主要給大家介紹了關(guān)于RabbitMQ竟無(wú)法反序列化List的相關(guān)資料,文中通過(guò)示例代碼將問(wèn)題以及解決的過(guò)程介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09

最新評(píng)論