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