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

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

1. 前言

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

2. @Value

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

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

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

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

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

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

3. @ConfigurationProperties

@ConfigurationProperties注解提供了我們將多個配置選項注入復(fù)雜對象的能力。它要求我們指定配置的共同前綴。比如我們要綁定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的自動轉(zhuǎn)換。

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

另外我們?nèi)绻脒M行嵌套的話可以借助于@NestedConfigurationProperty注解實現(xiàn)。也可以借助于內(nèi)部類。這里用內(nèi)部類實現(xiàn)將開頭yaml中所有的屬性進行注入:

package cn.felord.yaml.properties;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import static cn.felord.yaml.properties.FelordProperties.PREFIX;/** * 內(nèi)部類和枚舉配置. * * @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 {}

該注解需要顯式的注冊對應(yīng)的配置類。

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. 總結(jié)

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

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

標簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
婷婷激情一区| 久久国产66| 捆绑调教美女网站视频一区| 麻豆成人av在线| 亚洲黄色网址| 午夜国产欧美理论在线播放| 综合日韩在线| 国产福利一区二区精品秒拍| 国产欧洲在线| 午夜在线视频观看日韩17c| 亚洲三级国产| 国产欧美精品| 精品亚洲a∨一区二区三区18| 91亚洲国产成人久久精品| 天堂资源在线亚洲| 日韩精品欧美成人高清一区二区| 美女视频黄免费的久久| 99久久99久久精品国产片果冰 | 久久九九精品| 一区二区三区四区日韩| 麻豆精品在线播放| 国产二区精品| 国产精品亚洲二区| 美女少妇全过程你懂的久久| 日本成人在线不卡视频| 国产一区调教| 亚洲一区国产一区| 国产精品久久久网站| 久久精品高清| 欧美一级网址| 不卡在线一区| 国产精品久久久久久久久免费高清 | 欧美激情视频一区二区三区在线播放| 久久精选视频| 国产精品日韩精品在线播放| 国内精品福利| 久久麻豆视频| 亚洲字幕久久| 日韩三区免费| 欧美在线看片| 激情综合自拍| 老司机精品视频网| 综合视频一区| 美女久久久久| 精品精品久久| 欧美日韩91| 丝袜亚洲另类欧美| 神马午夜在线视频| 91成人福利| 乱人伦精品视频在线观看| 成人污污视频| 日韩精品一区二区三区免费视频 | 久久一区欧美| 亚洲青青久久| 久久久久久黄| 国内自拍视频一区二区三区| 日韩欧乱色一区二区三区在线| 久久香蕉国产| 美女在线视频一区| 日韩福利在线观看| 首页亚洲欧美制服丝腿| 日韩在线第七页| 久久av网站| 日韩精品视频中文字幕| 欧美午夜不卡影院在线观看完整版免费| 久久精品国产成人一区二区三区| 视频在线在亚洲| 1000部精品久久久久久久久| 九九99久久精品在免费线bt| 日韩三级久久| 日韩专区欧美专区| 好看的av在线不卡观看| bbw在线视频| 欧美精品97| 国产欧美激情| 国产欧美丝祙| 欧美日韩视频免费看| 日韩二区三区在线观看| 亚洲综合婷婷| 在线精品亚洲| 免费不卡在线观看| 欧美天堂亚洲电影院在线观看| 韩国精品主播一区二区在线观看 | 视频一区欧美精品| 午夜欧美在线| 欧美福利专区| 国产精品av一区二区| 一本大道色婷婷在线| 高清久久一区| 极品av在线| 国产一区二区三区免费在线| 国产精品v日韩精品v欧美精品网站| 日韩欧美激情| 欧美一区影院| 国产精品亚洲欧美日韩一区在线| 奇米狠狠一区二区三区| 亚洲精品福利| 日韩高清在线一区| 日本亚洲不卡| 亚洲永久字幕| 久久亚洲视频| 夜夜精品视频| 免费在线看一区| 蜜桃av一区二区三区电影| 久久福利精品| 日韩精品久久久久久| 三级久久三级久久久| 日韩精品中文字幕吗一区二区| 日本不卡在线视频| 久久国产三级精品| 国产精品红桃| 国产专区精品| 99久久精品网站| 午夜精品婷婷| 日韩中文字幕一区二区三区| 免费人成在线不卡| 日韩一区二区三区精品| 欧美日韩中文| 精品精品99| 青青久久av| 亚洲免费影院| 婷婷视频一区二区三区| 欧美日韩在线精品一区二区三区激情综合| 国产精品成人一区二区网站软件| 国产高清日韩| 色婷婷狠狠五月综合天色拍| 免费黄色成人| 蜜桃视频免费观看一区| 欧美日韩一视频区二区| 美女久久久久久 | 国产精品极品在线观看| 日产精品一区二区| 欧美日韩精品免费观看视欧美高清免费大片| 亚洲国产综合在线看不卡| 亚洲自啪免费| 国产区精品区| 欧美男人天堂| 日韩一级不卡| 日韩不卡一区二区三区| 久久99蜜桃| 日韩88av| 精品91久久久久| 日韩亚洲精品在线观看| 日韩av自拍| 免费精品视频| 久久国产日韩欧美精品| 亚洲伊人av| 日韩视频久久| 欧美一区影院| 久久夜夜操妹子| 中文字幕中文字幕精品| 麻豆一区二区99久久久久| 亚洲二区精品| 欧美另类中文字幕| 99久久99久久精品国产片果冰 | 成人免费一区| 国产免费成人| 麻豆精品一区二区综合av| 欧美特黄一区| 久久99蜜桃| 亚洲欧美日韩国产综合精品二区| 国产精品红桃| 国产精品普通话对白| 欧美成人一二区| 91久久午夜| 国产精品xxx在线观看| 美女网站一区| 欧美激情99| 蜜臀av在线播放一区二区三区 | 国产婷婷精品| 久久亚洲精品中文字幕| 免费人成精品欧美精品| 久久精品国产在热久久| 国产精品毛片在线看| 精品日韩一区| 亚洲婷婷丁香| 久久久精品午夜少妇| 国产精品视频一区二区三区四蜜臂| 国产高清一区| 国产精品不卡| 欧美亚洲免费| 在线综合亚洲| 日韩综合在线| 欧美自拍一区| 日韩亚洲精品在线| 中文字幕成在线观看| 91九色综合| 亚洲精品1区| 日韩在线欧美| 国产精品.xx视频.xxtv| 免费在线视频一区| 久久九九国产| 91青青国产在线观看精品| 日韩av字幕| 在线综合欧美| 久久精品在线| 中文字幕一区久| 麻豆精品久久| 欧美一级二级三级视频| 蜜桃av一区二区三区电影|