spring-boot @ConfigurationProperties腦洞真大
搞了一陣子C++,以前感覺C++很牛,現在怎麼覺得這東西這麼落後了,很多理念完全跟不上時代,關鍵相容性讓人抓狂了。。。只能說一切為了效率。。。
來看看spring-boot,完全是魔術啊,覺得spring的腦洞真大啊,來說一下今天的主角@ConfigurationProperties。
概述
我們知道,從spring-boot開始,已經支援yml檔案形式的配置,@ConfigurationProperties的大致作用就是通過它可以把properties或者yml配置直接轉成物件。
配置檔案轉成物件
Relaxed binding
用@ConfigurationProperties是支援“鬆綁定”的,我們不必每個字都和配置中的key一致。官網給出了兩個例子,e.g.
context-path
binds to contextPath
和e.g.
PORT
binds to port
集合的處理
如果在配置中需要配置集合的話,我們需要使用“-”符號
比如:
poolConfig: - maxIdle: 8 - minIdle: 0 - maxActive: 8 - maxWait: -1
元資料(Meta-data)
@ConfigurationProperties還支援spring元資料,可以在resource下建立META-INF資料夾,然後建立檔案additional-spring-configuration-metadata.json。裡面的資料格式必須滿足spring的元資料格式http://docs.spring.io/spring-boot/docs/1.5.3.RELEASE/reference/htmlsingle/#configuration-metadata
接下來我們來看個例子
yml配置如下:
spring:
redis:
dbIndex: 0
hostName: 192.168.58.133
password: nmamtf
port: 6379
timeout: 0
poolConfig:
- maxIdle: 8
- minIdle: 0
- maxActive: 8
- maxWait: -1
定義被轉換的物件
@Component
@ConfigurationProperties(prefix="spring.redis")
public class RedisProps {
private int dbIndex;
@NotNull
private String hostname;
private String password;
@NotNull
private int port;
private long timeout;
private List<Map<String,String>> poolConfig;
public int getDbIndex() {
return dbIndex;
}
public void setDbIndex(int dbIndex) {
this.dbIndex = dbIndex;
}
public String getHostname() {
return hostname;
}
public void setHostname(String hostname) {
this.hostname = hostname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public long getTimeout() {
return timeout;
}
public void setTimeout(long timeout) {
this.timeout = timeout;
}
public List<Map<String, String>> getPoolConfig() {
return poolConfig;
}
public void setPoolConfig(List<Map<String, String>> poolConfig) {
this.poolConfig = poolConfig;
}
}
這樣該物件的成員變數會被自動賦值,可以在其他地方進行注入
直接注入配置到java config中
如果你嫌上面還麻煩,那麼接下來的這個功能絕對讓你驚豔。
該功能在官方文件是沒有提到的,我們可以把@ConfigurationProperties和@Bean和在一起使用。
舉個例子,我們需要用@Bean配置一個Config物件,Config物件有a,b,c成員變數需要配置,那麼我們只要在yml或properties中定義了a=1,b=2,c=3,然後通過@ConfigurationProperties就能把值注入進Config物件中。這是魔術嗎?
下面我用實際的程式碼舉個例子
yml配置檔案修改如下
server:
port: 8080
spring:
redis:
dbIndex: 0
hostName: 192.168.58.133
password: nmamtf
port: 6379
timeout: 0
poolConfig:
maxIdle: 8
minIdle: 0
maxActive: 8
maxWait: -1
接著我們用@ConfigurationProperties來配置redis
@Configuration
@EnableAutoConfiguration
public class RedisConfig {
@Bean
@ConfigurationProperties(prefix="spring.redis.poolConfig")
public JedisPoolConfig getRedisConfig(){
JedisPoolConfig config = new JedisPoolConfig();
return config;
}
@Bean
@ConfigurationProperties(prefix="spring.redis")
public JedisConnectionFactory getConnectionFactory(){
JedisConnectionFactory factory = new JedisConnectionFactory();
factory.setUsePool(true);
JedisPoolConfig config = getRedisConfig();
factory.setPoolConfig(config);
return factory;
}
@Bean
public RedisTemplate<?, ?> getRedisTemplate(){
RedisTemplate<?,?> template = new StringRedisTemplate(getConnectionFactory());
return template;
}
}
注意,其中JedisConnectionFactory中包含dbIndex,hostName,password,port,timeout,poolConfig幾個成員變數。JedisPoolConfig包含maxIdle,minIdle,maxActive,maxWait幾個成員變數。
@ConfigurationProperties和@Value比較
它們兩個都能把配置檔案的值直接注入到程式碼,那麼它們的區別是什麼呢,怎麼選擇呢,直接拿官方的表格一下就清楚了
Feature |
@ConfigurationProperties |
@Value |
---|
相關推薦
spring-boot @ConfigurationProperties腦洞真大
搞了一陣子C++,以前感覺C++很牛,現在怎麼覺得這東西這麼落後了,很多理念完全跟不上時代,關鍵相容性讓人抓狂了。。。只能說一切為了效率。。。 來看看spring-boot,完全是魔術啊,覺得spring的腦洞真大
程式設計師桌面都長什麼樣?腦洞太大,第四個是“真”程式設計師
電腦桌面,那是作為一個IT人士,展示個性的地方,作為一名程式設計師,工作壓力大,還得找個地方釋放釋放,於是電腦桌面,就成了一個不錯的地方。 在這裡相信有許多想要學習前端的同學,關注小編文章最後面文字,可免費領取一整套系統的web前端學習教程! 當屬性滿滿的程式設計師們
狗年特別篇:賣萌的狗遊戲,腦洞夠大不如體驗夠萌
oss 引爆 cee 體驗 加速 height sof 又一 2010年 大年初一的狗年特別篇《狗年第一天,必須向20年前的經典狗狗遊戲致敬》推出後,就有朋友立刻補足了遺憾。誰說沒有用狗狗做主角的大作,至少有2個:其一是任天堂推出的掌遊《任天狗》,另一個則是一家韓國公司的網
spring boot @ConfigurationProperties vs @Value
spirng boot @ConfigurationPrope @Value 在spring boot的使用中,通過@ConfigurationProperties 和 @Value 兩個註解可以給類賦值,但是兩個的使用方式還是有些不同的,以下是官方說明以及自己在使用中的簡介。 1.根據他們
Spring Boot————@ConfigurationProperties的@Value區別
引言 Spring Boot從配置檔案中取值的方式有兩種,一種是批量注入@ConfigurationProperties,另一種是單獨注入@Value。 它們之間除了批量與單獨取值的區別之外,還存在著其他一些使用方式,本篇部落格將詳細講解這兩種註解之間的區別和使用方式。 區別比較
Spring boot @ConfigurationProperties和@EnableConfigurationProperties 作用
本文轉載於https://blog.csdn.net/u010502101/article/details/78758330 @ConfigurationProperties註解主要用來把properties配置檔案轉化為bean來使用的,而@EnableConfigurationPropert
Spring Boot @ConfigurationProperties使用指導
簡單屬性 exc add .class 簡單 cred 一個 創建 bject 1.簡介 Spring Boot的一個非常有用的功能是外部化配置,並且可以輕松訪問屬性文件中定義的屬性。 我們現在將詳細地探索@ConfigurationProperties註釋。 2.設
spring boot 錯誤,求大神幫解決
file from ast posit 解決 method tee class cep Exception in thread "main" java.lang.IllegalStateException: Failed to read Class-Path attribu
最近大家都在熱議“替人擋酒交朋友”,這個腦洞還可以開的更大……
嚴格 先驅 文化 height water san o2o vpd 交朋友 據媒體報道,近日,e代駕推出“e代喝”業務,即通過互聯網LBS定位,開放用戶互交功能,實現代喝功能。e代駕相關負責人表示,對於e代駕來說,能夠通過e代喝在串聯起海量用戶社交訴求的同時, 殺向社交領域
spring boot 文件上傳 文件過大 FileUploadBase$SizeLimitExceed
prop post class exce 1.4 part tip exc log application.properties中加入 multipart.maxFileSizemultipart.maxRequestSize Spring Boot 1.3.x或者之前 m
腦洞不是一般大!肆虐《絕地求生》的外掛還有這種操作?
去那 商品 lin rap word-wrap 話題 替代 極客 nor 作為2017年最熱的遊戲,《絕地求生:大逃殺》(俗稱“吃雞遊戲”)的火爆,不僅壓掉了《王者榮耀》,也讓昔日遊戲界的無敵IP《魔獸世界》有些黯然失色,形成了一個獨特的“吃雞”現象。然而,要來的遲早要來,
遊戲私服還有這樣的創意用法?這真的是腦洞大開了
私服過年的時候,和一些返鄉的遊戲圈好友茶話,天南海北的調侃著年終獎、吃雞遊戲和營銷創意之類的話題,然後就從泛濫的吃雞外掛扯到了私服上。私服是什麽?就是未經版權擁有者授權,非法獲得服務器端安裝程序之後設立的網絡服務器。簡單來說就是盜版網遊,或者說“玩了一個假遊戲”,但並非山寨。對於擺明就是盜版的東西,一位朋友卻
“軟件凈化”也是門大生意,想想也是腦洞
軟件凈化4月間,360安全衛士做了一個“小升級”——推出了個“軟件凈化”功能。咋一看,這似乎和360從創立伊始就一直在堅持的消滅流氓軟件的初心,並沒什麽特別值得念叨的。但,這背後藏著一門用戶黏性的大生意,無他,流氓軟件們升級了,殺入了隱秘戰線裏,讓許多殺軟都有點下不去手。此時,軟件凈化就變得至關重要了。唯有如
spring boot 使用@ConfigurationProperties
返回 進行 rem AD 實體 public name 綁定 efi 有時候有這樣子的情景,我們想把配置文件的信息,讀取並自動封裝成實體類,這樣子,我們在代碼裏面使用就輕松方便多了, 這時候,我們就可以使用@ConfigurationProperties,它可以把同類的配置
資料新增非同步解析重新整理大資料量redis (——)(三)Spring Boot普通類呼叫bean【從零開始學Spring Boot】
部落格分類: 從零開始學Spring Boot 從零開始學Spring BootSpring Boot普通類呼叫bean 【視訊&交流平臺】 à SpringBoot視訊 http://stu
Spring Boot修改最大上傳檔案限制:The field file exceeds its maximum permitted size of 1048576 bytes.
SpringBoot做檔案上傳時出現了The field file exceeds its maximum permitted size of 1048576 bytes.錯誤,顯示檔案的大小超出了允許的範圍。查看了官方文件,原來Spring Boot工程嵌入的tomcat限制了請求的檔案大小,這一
程式設計師一段程式碼慘遭老闆解僱,網友:簡直腦洞大開啊
程式設計師之間也存在著很大的差別。工作經驗,編碼能力等都有很多的差別。當然程式設計師的工作也與bug是不離不棄的。 小編最近逛論壇看到一貼。一程式設計師發帖晒出一段排序程式碼,具體如下 這段程式碼卻讓他遭到老闆辭退!看完這段程式碼後,網友們肯定有很多看法吧! 小編相信
Spring Boot(07)——ConfigurationProperties介紹
ConfigurationProperties介紹 ConfigurationProperties是一個註解,可以標註在一個Class上,這樣Spring Boot會從Environment中獲取其屬性對應的屬性值給其進行注入。比如下面的程式碼定義中,Spring Boot在例項化TestConfigura
Spring Boot配置檔案詳解-ConfigurationProperties和Value優缺點-(轉)好文
文章轉自 http://www.cnblogs.com/itdragon/p/8686554.html Spring Boot提供了兩種常用的配置檔案,分別是properties檔案和yml檔案。他們的作用都是修改Spring Boot自動配置的預設值。相對於properties檔案而言,yml檔
spring boot 配置檔案properties,yml語法學習及屬性獲取@ConfigurationProperties和@Value
1 概述 SpringBoot使用一個全域性的配置檔案,配置檔名是固定的;當我們建立一個專案時會在resource目錄下出現一個預設的配置檔案application.properties 我們可以在裡面進行一些引數的配置,當然還有另外一種方式yml檔案application.yml(