Springboot多種情況yml配置代碼實(shí)例
springboot 中各種配置項(xiàng)紀(jì)錄
1. @Value
最早獲取配置文件中的配置的時候,使用的就是這個注解,SpEL表達(dá)式語言。
// 使用起來很簡單
@Value("${config.demo.value:defaultValue}")
private String simpleValue;
通常我們配置的時候,不僅僅是一個單獨(dú)字段,可能是一組配置,用來組成一個對象。這個時候spring為我們提供了這個注解。
簡單的對象,在yml里也可以很簡單的寫出來。直接把每一個字段寫出即可。
而對復(fù)雜對象,如: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;
/**
* 字符串?dāng)?shù)組1
*/
private List<String> str1;
/**
* 字符串?dāng)?shù)組1
*/
private List<String> str2;
/**
* 鍵值對
*/
private Map<String, String> configMap;
/**
* ===========多個復(fù)雜對象==========
*/
/**
* 對象集合
*/
private List<SimpleConfig> simpleConfigs;
/**
* 對象作為map值
*/
private Map<String, SimpleConfig> configObjMap;
@Data
public static class SimpleConfig { // 注意:這里需要內(nèi)部類是public的,要不然注入的時候會出錯。
private String config;
private int count;
}
}
以上就是各種情況的書寫。其實(shí)也不難,list 就增加 - 來作為單個對象標(biāo)識,而map就直接寫key即可。
而spring在存儲properties的時候是怎么處理的呢,我們可以斷點(diǎn)一下 PropertyPlaceholderHelper,在這里我們可以看到存儲各種配置的source如下圖:

底層都是通過一個ResourceReloadingMap來存儲的,那么存儲list的時候,是什么結(jié)構(gòu)呢,如下:

// 存儲的時候是這樣的: simpleConfigs[0].config=configValue simpleConfigs[0].count=countValue ...
所以最終都是通過鍵值對的方式,只是對應(yīng)的格式,spring可以解析成對應(yīng)的樣子而已。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot使用RabbitMQ延時隊(duì)列(小白必備)
這篇文章主要介紹了SpringBoot使用RabbitMQ延時隊(duì)列(小白必備),詳細(xì)的介紹延遲隊(duì)列的使用場景及其如何使用,需要的小伙伴可以一起來了解一下2019-12-12
有關(guān)tomcat內(nèi)存溢出的完美解決方法
下面小編就為大家?guī)硪黄嘘P(guān)tomcat內(nèi)存溢出的完美解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05
Maven中plugins與pluginManagement的區(qū)別說明
這篇文章主要介紹了Maven中plugins與pluginManagement的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
Java的Struts框架中Action的編寫與攔截器的使用方法
這篇文章主要介紹了Java的Struts框架中Action的編寫與攔截器的使用方法,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-11-11
雪花算法(snowflak)生成有序不重復(fù)ID的Java實(shí)現(xiàn)代碼
雪花算法是一種分布式系統(tǒng)中生成唯一ID的方法,由41位時間戳、10位機(jī)器碼和12位序列號組成,具有唯一性、有序性和高效率等優(yōu)點(diǎn),這篇文章主要介紹了雪花算法(snowflak)生成有序不重復(fù)ID的Java實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2024-11-11

