国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

詳解SpringBoot程序啟動時執行初始化代碼

2024-07-14 08:42:14
字體:
來源:轉載
供稿:網友

因項目集成了Redis緩存部分數據,需要在程序啟動時將數據加載到Redis中,即初始化數據到Redis。

在SpringBoot項目下,即在容器初始化完畢后執行我們自己的初始化代碼。

第一步:創建實現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、我們自己的初始化代碼寫在onApplicationEvent里;

2、ContextRefreshedEvent是Spring的ApplicationContextEvent一個實現,在容器初始化完成后調用;

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

第二步:在SpringBootApplication中注冊我們剛創建的類

package com.stone;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic 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啟動時執行初始化代碼

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//如果有多個這樣的類時,可以通過Order指定執行順序,數值越小執行優先級越高@Order(value = 0)public class InitSystemConfig implements CommandLineRunner, EnvironmentAware {  /*   * 在服務啟動后執行,會在@Bean實例化之后執行,故如果@Bean需要依賴這里的話會出問題   */  @Override  public void run(String... args) {    //這里可以根據數據庫返回結果創建一些對象、啟動一些線程等      }  /*   * 在SystemConfigDao實例化之后、@Bean實例化之前執行   * 常用于讀取數據庫配置以供其它bean使用   * environment對象可以獲取配置文件的配置,也可以把配置設置到該對象中   */  @Override  public void setEnvironment(Environment environment) {  }}

 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 城固县| 鹿泉市| 庄河市| 闻喜县| 阿拉善左旗| 广宁县| 灌南县| 柘城县| 定陶县| 静乐县| 金湖县| 柳河县| 莲花县| 岚皋县| 南汇区| 白玉县| 杨浦区| 南丹县| 达拉特旗| 普洱| 彭山县| 承德县| 莲花县| 迁西县| 乐陵市| 隆德县| 左权县| 新宁县| 宜兰县| 娄烦县| 临沧市| 宁乡县| 连州市| 孙吴县| 容城县| 四川省| 三江| 肇东市| 克东县| 城口县| 潍坊市|