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

詳解SpringBoot程序啟動(dòng)時(shí)執(zhí)行初始化代碼

 更新時(shí)間:2018年09月05日 09:32:16   作者:stonesingsong  
這篇文章主要介紹了詳解SpringBoot程序啟動(dòng)時(shí)執(zhí)行初始化代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

因項(xiàng)目集成了Redis緩存部分?jǐn)?shù)據(jù),需要在程序啟動(dòng)時(shí)將數(shù)據(jù)加載到Redis中,即初始化數(shù)據(jù)到Redis。

在SpringBoot項(xiàng)目下,即在容器初始化完畢后執(zhí)行我們自己的初始化代碼。

第一步:創(chuàng)建實(shí)現(xiàn)ApplicationListener接口的類

package com.stone;

import com.stone.service.IPermissionService;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;

/**
 * @author Stone Yuan
 * @create 2017-12-02 21:54
 * @description
 */
public class ApplicationStartup implements ApplicationListener<ContextRefreshedEvent> {

  @Override
  public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
    IPermissionService service = contextRefreshedEvent.getApplicationContext().getBean(IPermissionService.class);
    service.loadUserPermissionIntoRedis();
  }
}

注意:

1、我們自己的初始化代碼寫(xiě)在onApplicationEvent里;

2、ContextRefreshedEvent是Spring的ApplicationContextEvent一個(gè)實(shí)現(xiàn),在容器初始化完成后調(diào)用;

3、以注解的方式注入我們需要的bean,會(huì)報(bào)空指針異常,因此需要以代碼中的方式獲取我們要的bean

第二步:在SpringBootApplication中注冊(cè)我們剛創(chuàng)建的類

package com.stone;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class YwythApplication {

  public static void main(String[] args) {
    SpringApplication springApplication = new SpringApplication(YwythApplication.class);
    springApplication.addListeners(new ApplicationStartup());
    springApplication.run(args);
  }
}

利用CommandLineRunner、EnvironmentAware在Spring boot啟動(dòng)時(shí)執(zhí)行初始化代碼

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.annotation.Order;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
//如果有多個(gè)這樣的類時(shí),可以通過(guò)Order指定執(zhí)行順序,數(shù)值越小執(zhí)行優(yōu)先級(jí)越高
@Order(value = 0)
public class InitSystemConfig implements CommandLineRunner, EnvironmentAware {


  /*
   * 在服務(wù)啟動(dòng)后執(zhí)行,會(huì)在@Bean實(shí)例化之后執(zhí)行,故如果@Bean需要依賴這里的話會(huì)出問(wèn)題
   */
  @Override
  public void run(String... args) {

    //這里可以根據(jù)數(shù)據(jù)庫(kù)返回結(jié)果創(chuàng)建一些對(duì)象、啟動(dòng)一些線程等
    

  }

  /*
   * 在SystemConfigDao實(shí)例化之后、@Bean實(shí)例化之前執(zhí)行
   * 常用于讀取數(shù)據(jù)庫(kù)配置以供其它bean使用
   * environment對(duì)象可以獲取配置文件的配置,也可以把配置設(shè)置到該對(duì)象中
   */
  @Override
  public void setEnvironment(Environment environment) {

  }
}

 以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java進(jìn)程cpu占用過(guò)高問(wèn)題解決

    Java進(jìn)程cpu占用過(guò)高問(wèn)題解決

    這篇文章主要介紹了Java進(jìn)程cpu占用過(guò)高問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 淺談一下Java線程組ThreadGroup

    淺談一下Java線程組ThreadGroup

    ThreadGroup是為了方便線程管理出現(xiàn)了,可以統(tǒng)一設(shè)定線程組的一些屬性,比如setDaemon,設(shè)置未處理異常的處理方法,設(shè)置統(tǒng)一的安全策略等等,需要的朋友可以參考下
    2023-05-05
  • Java雙重MD5加密實(shí)現(xiàn)安全登錄

    Java雙重MD5加密實(shí)現(xiàn)安全登錄

    MD5對(duì)密碼進(jìn)行加密存儲(chǔ)是常見(jiàn)的一種加密方式,本文主要介紹了Java雙重MD5加密實(shí)現(xiàn)安全登錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • apllo開(kāi)源分布式配置中心詳解

    apllo開(kāi)源分布式配置中心詳解

    這篇文章主要為大家介紹了apllo開(kāi)源分布式配置中心部署詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 深入理解Java中的HashMap

    深入理解Java中的HashMap

    HashMap是Java程序員使用頻率最高的用于映射(鍵值對(duì))處理的數(shù)據(jù)類型。隨著JDK(Java Developmet Kit)版本的更新,JDK1.8對(duì)HashMap底層的實(shí)現(xiàn)進(jìn)行了優(yōu)化,例如引入紅黑樹(shù)的數(shù)據(jù)結(jié)構(gòu)和擴(kuò)容的優(yōu)化等。本文將深入探討HashMap的結(jié)構(gòu)實(shí)現(xiàn)和功能原理
    2021-06-06
  • Springboot整合Dubbo+Nacos實(shí)現(xiàn)RPC調(diào)用的示例代碼

    Springboot整合Dubbo+Nacos實(shí)現(xiàn)RPC調(diào)用的示例代碼

    隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,越來(lái)越多的企業(yè)和開(kāi)發(fā)者開(kāi)始關(guān)注微服務(wù)架構(gòu),Nacos是阿里巴巴開(kāi)源的一個(gè)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái),本文講解如何將Spring Boot與Dubbo和Nacos整合,實(shí)現(xiàn)RPC調(diào)用,需要的朋友可以參考下
    2024-02-02
  • Mybatis中 XML配置詳解

    Mybatis中 XML配置詳解

    這篇文章主要介紹了Mybatis中 XML配置詳解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01
  • java8之LocalDate的使用、LocalDate格式化問(wèn)題

    java8之LocalDate的使用、LocalDate格式化問(wèn)題

    這篇文章主要介紹了java8之LocalDate的使用、LocalDate格式化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Spring Boot MyBatis 連接數(shù)據(jù)庫(kù)配置示例

    Spring Boot MyBatis 連接數(shù)據(jù)庫(kù)配置示例

    本篇文章主要介紹了Spring Boot MyBatis 連接數(shù)據(jù)庫(kù)示例的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • java json與map互相轉(zhuǎn)換的示例

    java json與map互相轉(zhuǎn)換的示例

    這篇文章主要介紹了java json與map互相轉(zhuǎn)換的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10

最新評(píng)論