日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring Boot2讀取配置常用方法代碼實例

瀏覽:22日期:2023-08-01 14:58:21

1. 前言

在Spring Boot項目中我們經常需要讀取application.yml配置文件的自定義配置,今天就來羅列一下從yaml讀取配置文件的一些常用手段和方法。

2. 使用@Value注解

首先,會想到使用@Value注解,該注解只能去解析yaml文件中的簡單類型,并綁定到對象屬性中去。

felord: phone: 182******32 def: name: 碼農小胖哥 blog: felord.cn we-chat: MSW_623 dev: name: 碼農小胖哥 blog: felord.cn we-chat: MSW_623 type: JUEJIN

對于上面的yaml配置,如果我們使用@Value注解的話,冒號后面直接有值的key才能正確注入對應的值。例如felord.phone我們可以通過@Value獲取,但是felord.def不行,因為felord.def后面沒有直接的值,它還有下一級選項。另外@Value不支持yaml松散綁定語法,也就是說felord.def.weChat獲取不到felord.def.we-chat的值。

@Value是通過使用Spring的SpEL表達式來獲取對應的值的:

// 獲取 yaml 中 felord.phone的值 并提供默認值 UNKNOWN@Value('${felord.phone:UNKNOWN}')private String phone;

@Value的使用場景是只需要獲取配置文件中的某項值的情況下,如果我們需要將一個系列的值進行綁定注入就建議使用復雜對象的形式進行注入了。

3. 使用@ConfigurationProperties注解

@ConfigurationProperties注解提供了我們將多個配置選項注入復雜對象的能力。它要求我們指定配置的共同前綴。比如我們要綁定felord.def下的所有配置項:

package cn.felord.yaml.properties;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import static cn.felord.yaml.properties.FelordDefProperties.PREFIX;/** * @author felord.cn */@Data@ConfigurationProperties(PREFIX)public class FelordDefProperties { static final String PREFIX = 'felord.def'; private String name; private String blog; private String weChat;}

我們注意到我們可以使用weChat接收we-chat的值,因為這種形式支持從駝峰camel-case到短橫分隔命名kebab-case的自動轉換。

如果我們使用@ConfigurationProperties的話建議配置類命名后綴為Properties,比如Redis的后綴就是RedisProperties,RabbitMQ的為RabbitProperties。

另外我們如果想進行嵌套的話可以借助于@NestedConfigurationProperty注解實現。也可以借助于內部類。這里用內部類實現將開頭yaml中所有的屬性進行注入:

package cn.felord.yaml.properties;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import static cn.felord.yaml.properties.FelordProperties.PREFIX;/** * 內部類和枚舉配置. * * @author felord.cn */@Data@ConfigurationProperties(PREFIX)public class FelordProperties { static final String PREFIX = 'felord'; private Def def; private Dev dev; private Type type; @Data public static class Def { private String name; private String blog; private String weChat; } @Data public static class Dev { private String name; private String blog; private String weChat; } public enum Type { JUEJIN, SF, OSC, CSDN }}

單獨使用@ConfigurationProperties的話依然無法直接使用配置對象FelordDefProperties,因為它并沒有被注冊為Spring Bean。我們可以通過兩種方式來使得它生效。

3.1 顯式注入Spring IoC

你可以使用@Component、@Configuration等注解將FelordDefProperties注入Spring IoC使之生效。

package cn.felord.yaml.properties;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;import static cn.felord.yaml.properties.FelordDefProperties.PREFIX;/** * 顯式注入Spring IoC * @author felord.cn */@Data@Component@ConfigurationProperties(PREFIX)public class FelordDefProperties { static final String PREFIX = 'felord.def'; private String name; private String blog; private String weChat;}

3.2 使用@EnableConfigurationProperties注冊

我們還可以使用注解@EnableConfigurationProperties進行注冊,這樣就不需要顯式聲明配置類為Spring Bean了。

package cn.felord.yaml.configuration;import cn.felord.yaml.properties.FelordDevProperties;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.context.annotation.Configuration;/** * 使用 {@link EnableConfigurationProperties} 注冊 {@link FelordDevProperties}使之生效 * @author felord.cn */@EnableConfigurationProperties({FelordDevProperties.class})@Configurationpublic class FelordConfiguration {}

該注解需要顯式的注冊對應的配置類。

3.3 使用@ConfigurationPropertiesScan掃描

在Spring Boot 2.2.0.RELEASE中提供了一個掃描注解@ConfigurationPropertiesScan。它可以掃描特定包下所有的被@ConfigurationProperties標記的配置類,并將它們進行IoC注入。

package cn.felord.yaml;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.context.properties.ConfigurationPropertiesScan;import org.springframework.boot.context.properties.EnableConfigurationProperties;/** * {@link ConfigurationPropertiesScan} 同 {@link EnableConfigurationProperties} 二選一 * * @see cn.felord.yaml.configuration.FelordConfiguration * @author felord.cn */@ConfigurationPropertiesScan@SpringBootApplicationpublic class SpringBootYamlApplication { public static void main(String[] args) { SpringApplication.run(SpringBootYamlApplication.class, args); }}

這非常適合自動注入和批量注入配置類的場景,但是有版本限制,必須在2.2.0及以上。

3.4 Environment

Spring Boot項目的話也可以通過org.springframework.core.env.Environment 提供的getProperty(String key)來獲取,一般并不是很常用。

4. 總結

日常開發中單個屬性推薦使用@Value,如果同一組屬性為多個則推薦@ConfigurationProperties。需要補充一點的是@ConfigurationProperties還支持使用JSR303進行屬性校驗。

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

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
蜜桃久久精品一区二区| 激情久久五月| 日韩高清在线不卡| 免费日本视频一区| 91精品一区二区三区综合| 天堂av在线| 久久天堂av| 国产精品97| 伊人久久亚洲影院| 黄色成人91| 免费在线观看视频一区| 亚洲精品大片| 国产日韩免费| 电影91久久久| 亚洲天堂一区二区| 欧美精品一区二区久久| 亚洲深夜av| 亚洲精品系列| 国产九一精品| 久久久久久色 | 国产欧美啪啪| 国产精品v亚洲精品v日韩精品| 国产亚洲欧美日韩精品一区二区三区 | 国产成人精品999在线观看| 日韩免费久久| 亚洲尤物在线| 国产欧美久久一区二区三区| 黄色在线观看www| 国产亚洲激情| 国产日韩一区二区三区在线| 日韩久久精品网| 国产午夜久久| 日韩av资源网| 在线手机中文字幕| 99国产精品| 久久国产婷婷国产香蕉| 在线天堂中文资源最新版| 一区视频在线| 国产精品一国产精品| 97在线精品| 国产一级久久| 国产精品99精品一区二区三区∴ | 国产一区二区三区久久久久久久久| 日韩啪啪电影网| 久久不射网站| 精品国产午夜肉伦伦影院| 午夜精品一区二区三区国产| 蜜芽一区二区三区| 久久精品一区二区国产| 亚洲精品va| 国产色99精品9i| 999久久久亚洲| 日韩一区二区三区免费视频| 国产成人精品一区二区三区视频 | 久久一区国产| 国产视频一区在线观看一区免费| 国产欧美欧美| 1024精品久久久久久久久| 欧美久久久网站| 久久香蕉国产| 国产欧美日韩精品一区二区免费| 久久影视一区| 国产精品一线| 亚洲手机视频| 欧美交a欧美精品喷水| 伊人影院久久| 精品国产精品久久一区免费式| 久久xxxx精品视频| 亚洲黄色免费av| 国产欧美另类| 日韩中文字幕区一区有砖一区 | 国产精品亚洲一区二区三区在线观看| 一本一道久久a久久| 欧美日韩免费观看视频| 欧美日韩一区二区三区不卡视频| 亚洲福利专区| 欧美有码在线| 婷婷六月综合| 老司机免费视频一区二区三区| 欧美在线网站| 日韩电影免费网站| 久久99久久人婷婷精品综合| 一本一道久久a久久| 欧美一级精品| 成人在线免费观看91| 亚洲精品人人| 99久久久久| 精品五月天堂| 国产探花一区| 亚洲三区欧美一区国产二区| 夜鲁夜鲁夜鲁视频在线播放| 天堂精品久久久久| 欧美日韩国产综合网| 日韩欧美不卡| 精品美女在线视频| 国产精品资源| 日本成人在线一区| 视频精品一区二区| 精品1区2区3区4区| 国产一区日韩一区| 日韩精品影视| 成人三级高清视频在线看| 麻豆中文一区二区| 国产精品mv在线观看| 国产亚洲字幕| 国产欧美三级| 亚洲人成在线影院| 国产精品日韩欧美一区| 欧美午夜精彩| 久久理论电影| 国产99久久| 国产综合激情| 激情欧美日韩一区| 激情丁香综合| 亚洲午夜久久久久久尤物 | 国产资源在线观看入口av| 久久亚洲黄色| 国产在线一区不卡| 狠狠久久伊人| 激情久久一区二区| 国产精品igao视频网网址不卡日韩 | 午夜精品久久久久久久久久蜜桃| 久久99国产精品视频| 欧美国产中文高清| 久久gogo国模啪啪裸体| 国产精品久久久久久久免费软件| 日韩不卡一二三区| 国产视频网站一区二区三区| 国产欧美成人| 欧美在线黄色| 国产福利一区二区三区在线播放| 麻豆精品久久久| av资源中文在线| 欧美不卡高清一区二区三区| 久久网站免费观看| 国产午夜精品一区二区三区欧美 | 91精品韩国| 亚洲成人精选| 中文亚洲免费| 日韩高清二区| 欧美日韩黄网站| 麻豆91在线播放| 国产成人精品亚洲日本在线观看| 性欧美xxxx免费岛国不卡电影| 在线视频免费在线观看一区二区| 日本大胆欧美人术艺术动态| 最新亚洲国产| 欧美国产日本| 久久精品成人| 视频在线观看一区| 国产欧美日本| 日韩不卡免费高清视频| 亚洲综合二区| 国产免费久久| 日韩黄色大片| 亚洲黄页一区| 日本一区福利在线| 欧美国产先锋| 久久精品123| 亚洲欧洲日韩精品在线| 国产精品久久久久av蜜臀 | 国产在线日韩| 日韩视频一二区| 成午夜精品一区二区三区软件| 国产综合激情| 青草国产精品| 成人精品久久| 国产午夜精品一区二区三区欧美 | 亚洲精品1区2区| 97精品久久| 日韩电影在线视频| 亚洲一区欧美激情| 国产精品久久777777毛茸茸| 美女网站视频一区| 中文一区一区三区免费在线观| 国产激情一区| 伊人久久大香线蕉av超碰演员| 国产亚洲高清一区| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 久久国内精品自在自线400部| 中文字幕一区久| 亚洲尤物av| 日韩理论视频| 日韩国产高清在线| 欧美黄色网页| 日韩精品欧美精品| 久久精品播放| 欧美国产专区| 视频一区在线视频| 免费看av不卡| 欧美一级一区| 欧美日韩少妇| 国产一区二区三区久久久久久久久| 亚洲一区二区网站| 国产精品麻豆久久| 日本大胆欧美人术艺术动态| 桃色av一区二区| 国产一卡不卡| 亚洲欧美日韩在线观看a三区| 精品视频在线观看网站|