摘要:全局配置文件默認(rèn)為下的,另外它還可以重命名為格式即對(duì)著兩種格式均支持。其中每個(gè)環(huán)境的數(shù)據(jù)庫(kù)地址服務(wù)器端口等等配置都會(huì)不同,如果在為不同環(huán)境打包時(shí)都要頻繁修改配置文件的話,那必將是個(gè)非常繁瑣且容易發(fā)生錯(cuò)誤的事。
SpringBoot全局配置文件默認(rèn)為src/main/resources下的application.properties,另外它還可以重命名為.yml格式(即SpringBoot對(duì)著兩種格式均支持)。
修改默認(rèn)配置如修改SpringBoot內(nèi)嵌Tomcat的啟動(dòng)端口為9080(.yml格式)
server: port: 9080
啟動(dòng)項(xiàng)目即可在控制臺(tái)啟動(dòng)日志中看到
s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 9080 (http)
這時(shí)在瀏覽器輸入localhost:9080即可正常訪問(wèn)
附SpringBoot Common application properties
我們也可以在SpringBoot配置文件中自定義屬性配置,如
girl: name: baby age: 18 cupSize: B
然后通過(guò)@Value("${屬性名}")注解來(lái)加載對(duì)應(yīng)的配置屬性
package cn.fulgens.springboot.springbootconfig.web; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @Value("${girl.name}") private String girlName; @Value("${girl.age}") private Integer girlAge; @Value("${girl.cupSize}") private String girlCupSize; @GetMapping("/girl") public String girl() { return "girlName: " + girlName + " girlAge: " + girlAge + " girlCupSize: " + girlCupSize; } }
啟動(dòng)工程,訪問(wèn):localhost:9080/girl,瀏覽器顯示:
girlName: baby girlAge: 18 girlCupSize: B
屬性注入成功
屬性配置間的引用在SpringBoot全局配置文件中的各個(gè)屬性之間可以通過(guò)直接引用來(lái)使用
girl: name: baby age: 18 cupSize: B desc: ${girl.name} ${girl.age} ${girl.cupSize}
同樣可以使用@Value注解將girl.desc屬性配置注入到某一屬性中,如
@RestController public class HelloController { @Value("${girl.name}") private String girlName; @Value("${girl.age}") private Integer girlAge; @Value("${girl.cupSize}") private String girlCupSize; @Value("${girl.desc}") private String girlDesc; @GetMapping("/girl") public String girl() { // return "girlName: " + girlName + " girlAge: " + girlAge + " girlCupSize: " + girlCupSize; return girlDesc; } }
再次啟動(dòng)工程,訪問(wèn):localhost:9080/girl,瀏覽器顯示:
baby 18 B將屬性配置賦給實(shí)體類(lèi)
當(dāng)我們屬性配置很多的時(shí)候,使用@Value注解一個(gè)一個(gè)的注入將會(huì)變得很繁瑣,這時(shí)SpringBoot提供了將屬性配置與實(shí)體類(lèi)結(jié)合的方式,具體先來(lái)看一下SpringBoot中官方的使用如org.springframework.boot.autoconfigure.data.redis.RedisProperties
package org.springframework.boot.autoconfigure.data.redis; import java.util.List; import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties( prefix = "spring.redis" ) public class RedisProperties { private int database = 0; private String url; private String host = "localhost"; private String password; private int port = 6379; private boolean ssl; private int timeout; private RedisProperties.Pool pool; private RedisProperties.Sentinel sentinel; private RedisProperties.Cluster cluster; ... }
對(duì)于上面我們自己關(guān)于girl的一些配置,同理我們可以創(chuàng)建一個(gè)GirlProperties類(lèi),如
package cn.fulgens.springboot.springbootconfig.properties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @ConfigurationProperties(prefix = "girl") @Component public class GirlProperties { private String name; private Integer age; private String cupSize; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getCupSize() { return cupSize; } public void setCupSize(String cupSize) { this.cupSize = cupSize; } }
注意這里指定了@ConfigurationProperties注解的prefix,同時(shí)以上@Component注解可加可不加
有時(shí)可能還需要在pom.xml中加上以下依賴(lài)
org.springframework.boot spring-boot-configuration-processor true
那么如何使用呢?我們需要在需要使用的類(lèi)上加@EnableConfigurationProperties注解,同時(shí)使用@Autowired注解注入即可,如
package cn.fulgens.springboot.springbootconfig.web; import cn.fulgens.springboot.springbootconfig.properties.GirlProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableConfigurationProperties(GirlProperties.class) public class HelloController { @Autowired private GirlProperties girlProperties; @GetMapping("/girl") public String girl() { return girlProperties.getName() + "--" + girlProperties.getAge() + "--" +girlProperties.getCupSize(); } }
再次啟動(dòng)工程,訪問(wèn):localhost:9080/girl,瀏覽器顯示:
baby--18--B使用隨機(jī)值
Spring Boot的屬性配置文件中可以通過(guò)${random}來(lái)產(chǎn)生隨機(jī)int、long、uuid或者string字符串,來(lái)支持屬性的隨機(jī)值。
比如我們給girl隨機(jī)來(lái)個(gè)年齡
age: ${random.int}自定義配置文件
雖然SprinBoot提供了application.properties或application.yml全局配置文件,但有時(shí)我們還是需要自定義配置文件,如將上文關(guān)于girl的屬性配置提取到girl.properties文件中,那么如何讓spring讀取這個(gè)屬性配置文件呢?答案是使用@PropertySource(value = "classpath:girl.properties")當(dāng)然如果這樣寫(xiě)需要將girl.properties文件放在類(lèi)路徑下
結(jié)合屬性配置類(lèi)的用法如下:
@Configuration @PropertySource(value = "classpath:girl.properties") @ConfigurationProperties(prefix = "girl") public class GirlProperties { private String name; private Integer age; private String cupSize; ... }多環(huán)境配置
開(kāi)發(fā)Spring Boot應(yīng)用時(shí),通常同一套程序會(huì)被應(yīng)用和安裝到幾個(gè)不同的環(huán)境,比如:開(kāi)發(fā)、測(cè)試、生產(chǎn)等。其中每個(gè)環(huán)境的數(shù)據(jù)庫(kù)地址、服務(wù)器端口等等配置都會(huì)不同,如果在為不同環(huán)境打包時(shí)都要頻繁修改配置文件的話,那必將是個(gè)非常繁瑣且容易發(fā)生錯(cuò)誤的事。
在Spring Boot中多環(huán)境配置文件名需要滿足application-{profile}.properties的格式,其中{profile}對(duì)應(yīng)你的環(huán)境標(biāo)識(shí),比如:
application-test.yml:測(cè)試環(huán)境
application-dev.yml:開(kāi)發(fā)環(huán)境
application-prod.yml:生產(chǎn)環(huán)境
哪個(gè)profile會(huì)被激活?在application.yml文件中通過(guò)spring.profiles.active屬性來(lái)設(shè)置,其值對(duì)應(yīng){profile}值
這里在類(lèi)路徑下創(chuàng)建application-dev.yml配置server.port為8080,并在application.yml中配置spring.profiles.active為dev
再次啟動(dòng)工程,訪問(wèn):localhost:8080/girl即可正常訪問(wèn)
參考自
慕課廖師兄girl案例
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76382.html
摘要:哪吒社區(qū)技能樹(shù)打卡打卡貼函數(shù)式接口簡(jiǎn)介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號(hào)作者架構(gòu)師奮斗者掃描主頁(yè)左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無(wú)意間聽(tīng)到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡(jiǎn)而言之,不缺干 ? 哪吒社區(qū)Java技能樹(shù)打卡?【打卡貼 day2...
摘要:前提好幾周沒(méi)更新博客了,對(duì)不斷支持我博客的童鞋們說(shuō)聲抱歉了。熟悉我的人都知道我寫(xiě)博客的時(shí)間比較早,而且堅(jiān)持的時(shí)間也比較久,一直到現(xiàn)在也是一直保持著更新?tīng)顟B(tài)。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒(méi)更新博客了,對(duì)不斷支持我博客的童鞋們說(shuō)聲:抱歉了!。自己這段時(shí)...
摘要:代碼如下可以看到中一共有個(gè)依賴(lài),其中只有是我手動(dòng)加入的,用于單元測(cè)試。點(diǎn)擊項(xiàng)目啟動(dòng)按鈕,效果如下好的程序必須配備完善的單元測(cè)試。測(cè)試結(jié)果如下可以看到紅圈框住的地方,出現(xiàn)這個(gè)綠色標(biāo)志證明單元測(cè)試沒(méi)問(wèn)題。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問(wèn)題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問(wèn)題。 前言 哎呦喂,按照以往的慣例今天周六我的安排應(yīng)該是待在家學(xué)學(xué)貓叫啥的。但是今年這種日子就可能一去不復(fù)返了,沒(méi)...
摘要:本文參考官方文檔部分特定版本如版本官方文檔地址注本文基于構(gòu)建話說(shuō)在上已經(jīng)有多顆星了,足見(jiàn)火爆程度簡(jiǎn)介以下介紹引自創(chuàng)建獨(dú)立的應(yīng)用程序直接嵌入,或無(wú)需部署文件提供自己的入門(mén)來(lái)簡(jiǎn)化你的配置盡可能自動(dòng)配置提供生產(chǎn)就緒功能,如指標(biāo),運(yùn)行 本文參考 Spring Boot官方文檔 Part II. Getting Started部分特定版本如1.5.10.RELEASE版本官方文檔地址:https...
閱讀 3475·2021-11-18 10:02
閱讀 3722·2021-09-13 10:25
閱讀 1931·2021-07-26 23:38
閱讀 2582·2019-08-30 15:44
閱讀 2288·2019-08-30 13:51
閱讀 1235·2019-08-26 11:35
閱讀 2280·2019-08-26 10:29
閱讀 3455·2019-08-23 14:56