国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

技巧!Spring Boot生產(chǎn)環(huán)境重新初始化Bean

開發(fā) 前端
為了演示我們將創(chuàng)建一個bean,該Bean將從配置文件中讀取配置屬性。如果文件中的屬性發(fā)生變化,則對該Bean進行重新初始化以便得到最新的數(shù)據(jù)。

1. 簡介

在本篇文章中,我將介紹在運行時重新初始化單例 Spring Bean 的方法。默認情況下,具有單例作用域的 Spring Bean 不會在應用程序生命周期中重新初始化。不過,有時可能需要重新創(chuàng)建 Bean,例如在更新屬性時。我將介紹幾種實現(xiàn)此功能的方法。

2. 實戰(zhàn)案例

為了演示我們將創(chuàng)建一個bean,該Bean將從配置文件中讀取配置屬性。如果文件中的屬性發(fā)生變化,則對該Bean進行重新初始化以便得到最新的數(shù)據(jù)。

2.1 單例Bean定義

@Component
public class ConfigManager {


  private static final Logger logger = LoggerFactory.getLogger(ConfigManager.class) ;


  private Map<String, Object> config = new HashMap<>() ;
  // 配置的是具體值是絕對路徑
  private final String filePath ;
  public ConfigManager(@Value("${pack.app.filePath}") String filePath) {
    this.filePath = filePath ;
    // 創(chuàng)建該bean對象時,加載配置文件信息
    initConfig() ;
  }
  private void initConfig() {
    Properties properties = new Properties() ;
    try {
      properties.load(Files.newInputStream(Paths.get(filePath))) ;
    } catch (IOException e) {
      logger.error("錯誤的加載配置文件, {}", e) ;
    }
    for (Map.Entry<Object, Object> entry : properties.entrySet()) {
      config.put(String.valueOf(entry.getKey()), entry.getValue());
    }
  }
  public Object getConfig(String key) {
    return config.get(key) ;
  }
}

接下來,在classpath下新建config.properties配置文件,配置內容如下:

pack:
  app:
    filePath: d:/pack/config.properties

下面我們可以定義一個Controller該測試當前的配置是否有問題。

@RestController
@RequestMapping("/config")
public class ConfigController {


  @Autowired
  private ConfigManager configManager;


  @GetMapping("/{key}")
  public Object get(@PathVariable String key) {
    return configManager.getConfig(key);
  }
}

默認配置文件內容

title=xxxooo1

訪問接口

圖片圖片

目前,上面的接口不管配置如何修改,在不重啟服務的情況下都無法得到最新的值;接下來我將通過幾種方式來演示如何去刷新最新的配置。

2.2 通過公共方法刷新

如果我們想要重新加載屬性而不是重新創(chuàng)建對象本身,我們可以簡單地創(chuàng)建一個公共方法來再次初始化。在我們的ConfigManager中,讓我們添加一個調用reloadConfig()方法的方法:

public void reloadConfig() {
  initConfig() ;
}

然后,當我們要重新加載屬性時,就可以調用該方法。接著在Controller中定義另一個接口,該接口調用 reloadConfig()方法:

@GetMapping("/reloadConfig")
public void reloadConfig() {
  configManager.reloadConfig() ;
}

通過測試上面的代碼,你將得到最新的配置。此種方法也是最容易想到的辦法。

2.3 使用@Lazy注解

我們可以使用@Lazy注解添加到注入的ConfigManager對象的地方,如下示例:

@Resource
@Lazy
private ConfigManager configManager;
@Value("${pack.app.filePath}")
private String filePath ;
@GetMapping("/reinitializeBean")
public void reinitializeBean() {
  DefaultSingletonBeanRegistry registry = (DefaultSingletonBeanRegistry) context.getAutowireCapableBeanFactory() ;
  // 銷毀bean;銷毀后當再次使用該bean時容器會再次執(zhí)行整個創(chuàng)建過程
  registry.destroySingleton("configManager") ;
}

當配置發(fā)生變化后,先調用上面的/reinitializeBean接口,這會先把單例池中的實例刪除,當再次調用/title接口時就會重新創(chuàng)建對象了。

2.4 通過容器獲取Bean

我們可以將對應的bean銷毀,然后在使用的時候再次從容器中獲取,這時候由于已經(jīng)將該單例bean銷毀,單例池中已經(jīng)沒有了,所以會重新創(chuàng)建。

@Resource
private ApplicationContext context ;
@Value("${pack.app.filePath}")
private String filePath ;
@GetMapping("/destroyBean")
public void destroyBean() {
  DefaultSingletonBeanRegistry registry = (DefaultSingletonBeanRegistry) applicationContext.getAutowireCapableBeanFactory() ;
  registry.destroySingleton("configManager") ;
}

接下來修改使用獲取數(shù)據(jù)的接口

@GetMapping("/{key}")
public Object get(@PathVariable String key) {
  ConfigManager cm = context.getBean(ConfigManager.class) ;
  return cm.getConfig(key) ;
}

如果配置文件修改后,我們先調用/destroyBean接口,這樣當我們調用/title接口時,將會獲取到最新的配置。

責任編輯:武曉燕 來源: Spring全家桶實戰(zhàn)案例源碼
相關推薦

2024-10-18 11:32:15

2025-04-25 11:25:00

SpringBean初始化

2011-03-31 16:46:10

LinuxMySQL

2010-01-05 15:35:21

.NET Framew

2009-08-12 17:43:54

雙括弧Java語法技巧

2022-05-10 10:06:03

Kafka

2023-05-03 23:48:24

Spring容器初始化

2024-07-31 11:26:05

反射BeanXML

2010-02-24 15:41:19

Linux Light

2025-05-21 10:09:09

Spring 5.xIOC編程

2025-03-14 10:37:24

SpringSpring IOC容器

2023-11-12 23:08:17

C++初始化

2010-03-11 19:25:35

Python環(huán)境

2010-02-07 14:50:46

Ubuntu配置文件

2023-12-01 10:20:00

SpringBean參數(shù)機制

2010-01-22 13:16:05

VB.NET初始化數(shù)組

2023-05-08 15:55:16

MySQL數(shù)據(jù)庫

2019-11-04 13:50:36

Java數(shù)組編程語言

2009-11-11 15:29:15

ADO初始化

2009-09-08 09:48:34

LINQ初始化數(shù)組
點贊
收藏

51CTO技術棧公眾號

欧美精品videosex性欧美| 亚洲三级一区| 国产精品青青草| 亚洲国产高清一区| 日韩av在线免播放器| 青青草一区二区| 不卡免费追剧大全电视剧网站| 国产精品亚洲第一区| 成人一级片网站| 国产精品综合久久| 国产婷婷成人久久av免费高清| 韩日精品一区| 亚洲成人av免费| 国产精品久久久久久网站| 超碰电影在线播放| 久久综合狠狠综合久久综合88| 日韩精品一区二| 国产视频三级在线观看播放| 久久精品国产99国产精品| 高清在线视频日韩欧美| 国产91足控脚交在线观看| 久久九九99视频| 奇米精品在线| 国产精品资源| 成人天堂av| 蜜桃视频在线一区| 91高清免费在线观看| 蜜桃精品一区二区三区| 精品99一区二区| 九九九九九精品| 日本欧美电影在线观看| 国产一区二区女| 91精品久久久久久久久久| h视频在线免费观看| 国产啊啊啊视频在线观看| 欧美综合天天夜夜久久| 亚洲人成小说| 欧美精品久久久久久久多人混战| 日本在线免费中文字幕| 日韩一区二区在线观看视频| brazzers在线观看| 中文字幕欧美日韩精品| 日韩欧美中文字幕在线视频 | 97在线精品国自产拍中文| www.成人| 97久久精品人人澡人人爽缅北| 国产成人精品福利| 97色伦亚洲国产| 999精品色在线播放| 蜜桃999成人看片在线观看| 国产一区二区三区久久久| 国产l精品国产亚洲区久久| 在线观看成人黄色| 人妖欧美1区| 国外成人在线视频| 色一区二区三区四区| 亚洲欧洲精品一区| 国产国语**毛片高清视频| 亚洲午夜久久久久久久久电影网 | 怡红院在线观看| 国产精品成人免费电影| 成人看片黄a免费看在线| 国产一二在线观看| 久久躁日日躁aaaaxxxx| 国产精品99一区二区三| 国产在线视频综合| 欧美午夜在线一二页| 人人精品久久| 国产精品99蜜臀久久不卡二区| 久久久久久色| h网址在线观看| 精品三级av在线| 99精品国产在热久久婷婷| 两个人hd高清在线观看| 日本高清视频一区| 久久精品视频在线免费观看| 亚洲性图自拍| 国产欧美一区二区三区不卡高清| 91一区一区三区| 国产成人免费9x9x人网站视频 | 国产特黄在线| 国产欧美 在线欧美| 亚洲精品欧美激情| 88xx成人免费观看视频库 | 国产91在线观看| 日本精品在线中文字幕| 免费国产黄色网址| 中文字幕av日韩| 国产乱淫av一区二区三区| 97人人爽人人澡人人精品| 日韩欧美一区二区视频在线播放 | 久久天堂av| 手机在线观看国产精品| 日韩欧美国产不卡| 国产精品一二一区| 日本一区二区三区中文字幕| 无码人妻h动漫| 欧美一区二区色| 亚洲va中文字幕| 欧美视频久久| 黄色小说在线播放| 免费cad大片在线观看| 久久精品国产成人| 欧美极品少妇xxxxⅹ高跟鞋 | 在线成人激情黄色| 国产精品人成在线观看免费 | 99国产视频| 国产亚洲视频在线观看| 亚洲超碰精品一区二区| 成人免费看片39| 日本激情视频在线观看| 日韩精品第1页| 欧美在线视频a| 精品久久久久国产| 成人av网址在线观看| av一区二区高清| 国精产品一区二区三区有限公司| 免费涩涩18网站入口| 久久综合九色99| 久久全国免费视频| 欧美妇女性影城| 国产精品久久午夜夜伦鲁鲁| 亚洲精品2区| 青青草在线免费观看| 精品久久久久久无码中文野结衣| 国产91精品久久久久久久| 欧美日韩一区视频| 久久久久久久久久久99999| 欧美阿v一级看视频| 91成人福利社区| 黄色美女网站在线观看| 欧美在线一区视频| 一区二区三区视频在线播放| 999久久久| 欧美成人合集magnet| 日韩精品免费在线视频观看| 色婷婷综合五月| 26uuu国产一区二区三区| 91精品啪在线观看国产81旧版 | 亚洲精品成人久久电影| 91国产成人在线| 亚洲午夜影视影院在线观看| 国产亚洲精品aa| 国产精品一区2区| 国产宾馆实践打屁股91| 91片黄在线观看| 久久久99精品久久| 国产女人水真多18毛片18精品视频 | 99re在线视频这里只有精品| 美女视频一区二区| 久久三级视频| 日韩精品五月天| 国产精品 日产精品 欧美精品| 蜜桃av一区二区| 国产剧情一区二区三区| 国产一区二区h| 自拍偷拍亚洲欧美日韩| 一本色道**综合亚洲精品蜜桃冫| 国产三级一区二区| 色偷偷88欧美精品久久久| 色婷婷精品久久二区二区蜜臂av| 日韩一区二区三区免费看 | 亚洲无中文字幕| 在线观看一区视频| 丁香婷婷综合五月| 成a人片国产精品| 亚洲精品视频在线观看免费| 欧美在线免费播放| 精品久久久av| 成人性教育视频在线观看| 日b视频免费观看| 亚洲女优视频| 小草在线视频免费播放| 日韩美女毛片| 日韩中文字幕区一区有砖一区| 99久久婷婷国产综合精品| 在线视频中文字幕一区二区| 日韩一区二区免费高清| 亚州欧美日韩中文视频| 丰满女人性猛交| 成视人a免费观看视频| 天天综合网站| 欧美午夜在线| 久久久一区二区| 欧美一区二区观看视频| 欧美精品在线免费观看| 久久久久久久免费| 在线视频中文字幕久| 懂色av一区二区| 国产乱码精品一区二区三区av | 亚洲免费看片| 一区在线电影| 性视频一区二区三区| 在线免费观看亚洲| 国产自产高清不卡| 欧美丝袜一区二区| 日本一欧美一欧美一亚洲视频| 青青艹视频在线| 一区二区三区短视频| 国产一区二区毛片|