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

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

Spring Boot讀取配置屬性常用方法解析

瀏覽:29日期:2023-08-16 09:31:54

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及以上。

4. 總結

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

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

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩电影免费网址| 日韩中文欧美在线| 欧美jjzz| 国产一区二区三区亚洲综合| 亚洲精品美女91| 精品一区免费| 日韩免费视频| 精品国产乱码久久久| 日韩av网站免费在线| 亚洲夜间福利| 视频二区不卡| 精品三级av| 久久久久99| 日韩影院二区| 麻豆国产一区| 久久久久伊人| 欧美日一区二区三区在线观看国产免| 日韩av中文字幕一区二区| 欧美日韩91| 麻豆精品在线播放| 国产一区二区三区亚洲| 日韩综合精品| 伊人成人在线视频| 亚洲精品免费观看| 国产亚洲精aa在线看| 毛片不卡一区二区| 中文在线а√在线8| 中文字幕高清在线播放| 日韩精品不卡一区二区| 久久中文亚洲字幕| 石原莉奈一区二区三区在线观看 | 欧美一级一区| 久久av网站| 日韩av首页| 国产精品视区| 日韩avvvv在线播放| 久久中文字幕导航| 久久中文字幕二区| 一区二区三区网站| 国产福利一区二区精品秒拍| 日韩免费视频| 三级一区在线视频先锋| 青草久久视频| 91亚洲国产高清| 久久久久久久久99精品大| 日韩午夜高潮| 久久精品xxxxx| 日韩精品一区二区三区免费观看| 午夜一级久久| 精品视频网站| 亚洲激情黄色| 国产欧美丝祙| 欧美午夜精品一区二区三区电影| 视频一区中文字幕国产| 国产精品久久久久久模特| 丝袜av一区| 日韩欧美久久| 桃色一区二区| 欧美精品福利| 欧美成人亚洲| 日韩av中文字幕一区二区| 日韩福利一区| 综合一区av| 成人看片网站| 欧美有码在线| 欧美在线亚洲| 欧美国产三级| 亚洲综合丁香| 国产成年精品| 日韩国产一二三区| 视频小说一区二区| 国产精品视频一区二区三区四蜜臂 | 日韩精品1区| 亚洲精品人人| 亚洲h色精品| 国产高清亚洲| 蜜臀av国产精品久久久久| 成人三级高清视频在线看| 蜜臀av亚洲一区中文字幕| 中文字幕色婷婷在线视频| 四虎精品一区二区免费| 久久理论电影| 国产剧情一区| 久久不射中文字幕| 亚洲天堂一区二区| 国产精品日本一区二区三区在线| 好吊日精品视频| 麻豆国产在线| 国产精品观看| 婷婷成人av| 国产日韩综合| 群体交乱之放荡娇妻一区二区| 国产精品一区三区在线观看| 国产一区白浆| 欧洲av不卡| 欧美国产免费| 69堂精品视频在线播放| 视频一区二区三区入口| av免费不卡国产观看| 国产毛片精品| 日本国产亚洲| 麻豆久久精品| 亚洲高清不卡| 日韩一区二区在线免费| 国产精品xxxav免费视频| 综合在线一区| 亚洲综合国产| 精品在线91| 日韩网站中文字幕| 久久久久久久欧美精品| 国产盗摄——sm在线视频| 国产精品xxx| 国产欧美成人| 日韩1区2区3区| 亚洲tv在线| 亚洲精品亚洲人成在线观看| 久久aⅴ国产紧身牛仔裤| 2023国产精品久久久精品双| 欧美不卡高清一区二区三区| sm捆绑调教国产免费网站在线观看| 国产精品麻豆成人av电影艾秋 | 中文无码日韩欧| 久久国产精品亚洲77777| 欧美另类综合| 亚洲深夜福利| 免费在线看一区| 最新国产精品久久久| 综合视频一区| 欧美精品三级在线| 国产精品2023| 91亚洲国产高清| 久久蜜桃资源一区二区老牛| 久久九九99| 91免费精品国偷自产在线在线| 日本在线成人| 亚洲区国产区| 日韩有码av| 欧美视频久久| 久久97视频| 免费看av不卡| 久久国产日本精品| 午夜av一区| 免费在线视频一区| 日韩免费精品| 国产日韩三级| 国产成人精品一区二区免费看京| 9999国产精品| 蜜桃国内精品久久久久软件9| 黄色日韩在线| 亚洲欧美一级| 亚洲欧美不卡| 日韩精品第一| 精品三区视频| 中文在线免费视频| 婷婷色综合网| 日韩在线黄色| 精品国产一区二区三区av片| 成人福利视频| 亚洲激情中文在线| 日本中文字幕视频一区| 日韩精品高清不卡| 国产成人免费| 欧美日韩国产探花| 日韩精品视频一区二区三区| 久久爱www.| 日韩欧美视频专区| 国产免费成人| 国产福利资源一区| 久久久久久免费视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产亚洲人成a在线v网站| 丁香婷婷久久| 国产精品婷婷| 欧美1区二区| 欧美日韩国产一区精品一区| 日韩av电影一区| 日韩久久视频| 日韩国产欧美一区二区三区| 欧美好骚综合网| 久久xxxx精品视频| 国产情侣一区| 99久久精品网| 国产毛片久久久| 五月天综合网站| 国产精品igao视频网网址不卡日韩| 国产一区清纯| 麻豆一区在线| 一本综合精品| 91精品国产成人观看| 国产精品一站二站| 中日韩男男gay无套| 九九九精品视频| 蜜臀久久久久久久| 日韩免费在线| 国产精品久久久久久久久免费高清| 亚洲黄色影院| 精品三级av| 青青国产精品| 一级欧洲+日本+国产| 久久精品国产一区二区|