歡迎您光臨本站 註冊首頁

Springboot多種情況yml配置代碼實例

←手機掃碼閱讀     qp18502452 @ 2020-07-07 , reply:0

springboot 中各種配置項紀錄

1. @Value

最早獲取配置文件中的配置的時候,使用的就是這個註解,SpEL表達式語言。

  // 使用起來很簡單  @Value("${config.demo.value:defaultValue}")   private String simpleValue;

 

通常我們配置的時候,不僅僅是一個單獨字段,可能是一組配置,用來組成一個對象。這個時候spring為我們提供了這個註解。

簡單的對象,在yml裡也可以很簡單的寫出來。直接把每一個字段寫出即可。

而對複雜對象,如:list、map等的,就需要查一下資料了,這裡簡單記錄一下寫法,直接看代碼。

  # 配置示例  config:   demo:    value: testValue      simpleConfig:     config: testConfig      str1: abc,cde    str2:     - abc     - cde      configMap:     key1: value1     海賊王: 路飛      simpleConfigs:     - config: 羅賓      count: 1     - config: 烏索普      count: 1     - config: 索隆      count: 1      configObjMap:     key1:      config: value1     key2:      config: value2

 

pojo 對象定義如下:

  @Data  @ConfigurationProperties(prefix = "config.demo")  @Configuration  public class ConfigDemo {   @Value("${config.demo.value:defaultValue}")   private String simpleValue;     /**===========簡單對象===========*/   /**    * 對象    */   private SimpleConfig simpleConfig;   /**    * 字符串數組1    */   private List<String> str1;   /**    * 字符串數組1    */   private List<String> str2;   /**    * 鍵值對    */   private Map<String, String> configMap;     /**    * ===========多個複雜對象==========    */   /**   	* 對象集合   	*/   private List<SimpleConfig> simpleConfigs;   /**   * 對象作為map值   */   private Map<String, SimpleConfig> configObjMap;       @Data   public static class SimpleConfig { // 注意:這裡需要內部類是public的,要不然注入的時候會出錯。    private String config;    private int count;   }  }

 

以上就是各種情況的書寫。其實也不難,list 就增加 - 來作為單個對象標識,而map就直接寫key即可。

而spring在存儲properties的時候是怎麼處理的呢,我們可以斷點一下 PropertyPlaceholderHelper,在這裡我們可以看到存儲各種配置的source如下圖:

底層都是通過一個ResourceReloadingMap來存儲的,那麼存儲list的時候,是什麼結構呢,如下:

  // 存儲的時候是這樣的:    simpleConfigs[0].config=configValue  simpleConfigs[0].count=countValue  ...

 

所以最終都是通過鍵值對的方式,只是對應的格式,spring可以解析成對應的樣子而已。


[qp18502452 ] Springboot多種情況yml配置代碼實例已經有497次圍觀

http://coctec.com/docs/java/show-post-241580.html