SpringBoot實戰 | 配置檔案詳解
微信公眾號:一個優秀的廢人
前言
如題,今天解析下 SpringBoot 的配置檔案。
自定義屬性載入
首先構建 SpringBoot 專案,不會的看這篇舊文 使用 IDEA 構建 Spring Boot 工程 。
首先在專案根目錄下加入以下自定義屬性:
# 防止讀取亂碼 spring.http.encoding.charset=UTF-8 # 專案啟動埠 server.port=9999 # 自定義配置 com.nasus.author.name=一個優秀的廢人 com.nasus.article.title=SpringBoot配置檔案詳解
使用 @value 註解讀取配置檔案屬性:
package com.nasus.bean; import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * Project Name:springboot_properties_demo <br/> * Package Name:com.nasus.properties <br/> * Date:2019/1/28 20:59 <br/> * <b>Description:</b> TODO: 描述該類的作用 <br/> * @author <a href="[email protected]">nasus</a><br/> */ @Data @Component public class PropertiesBean { @Value("${com.nasus.author.name}") private String name; @Value("${com.nasus.article.title}") private String title; @Value("${com.nasus.doing}") private String desc; }
之後新建 controller 測試自定義屬性載入,程式碼如下:
package com.nasus.controller; import com.nasus.bean.PropertiesBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * Project Name:springboot_properties_demo <br/> * Package Name:com.nasus.controller <br/> * Date:2019/1/28 21:41 <br/> * <b>Description:</b> TODO:測試自定義屬性載入<br/> * * @author <a href="[email protected]">nasus</a><br/> */ @RestController @RequestMapping("/test") public class TestController { @Autowired private PropertiesBean propertiesBean; @GetMapping("/getInfo") public PropertiesBean getInfo(){ return propertiesBean; } }
訪問 http://localhost :8080/test/getInfo 檢視載入結果:
可以看到,加入 @value 註解之後,配置檔案的屬性都被讀取出來了。以前,或許我們還需要專門寫一個讀取配置檔案的工具類才能把屬性讀取出來,現在有了 Spring ,我們可以直接使用 @value 就能讀取了,簡直不能太方便。本例原始碼在這: github 地址
引數間的引用
配置檔案程式碼如下:
# 防止讀取亂碼 spring.http.encoding.charset=UTF-8 # 專案啟動埠 server.port=9999 # 自定義配置 com.nasus.author.name=一個優秀的廢人 com.nasus.article.title=SpringBoot配置檔案詳解 com.nasus.doing=${com.nasus.author.name}寫文章《${com.nasus.article.title}》
可以看到最後一個引數配置使用了前兩個的引數配置,測試結果如下:
使用隨機數
有時專案需求,可能我們需要配置一些隨機數,比如說為了安全而隨機配置的伺服器埠,以及登入金鑰。這時我們就可以用 SpringBoot 的 random 屬性來配置隨機數,比如:
# 隨機字串 com.nasus.article.value=${random.value} # 隨機int com.nasus.article.number=${random.int} # 隨機long com.nasus.article.bignumber=${random.long} # 10以內的隨機數 com.nasus.article.test1=${random.int(10)} # 10-20的隨機數 com.nasus.article.test2=${random.int[10,20]}
使用多配置檔案
很多時候我們開發專案都需要很多套環境,比如有測試環境,開發環境以及生產環境。不同的環境就需要使用不同的配置檔案,為此我們可以根據這 3 個環境分別新建 以下 3 個配置檔案。
application-dev.properties:開發環境
application-test.properties:測試環境
application-prod.properties:生產環境
專案中預設的配置檔案是 application.properties 。這時我們可以根據自己的環境去使用相應的配置檔案,比如說,專案各個環境的埠必須不一樣。那我們可以這樣配置:
application-dev.properties:開發環境
server.port=6666
application-test.properties:測試環境
server.port=7777
application-prod.properties:生產環境
server.port=8888
假如,現在我打包上線,那就必須用生產環境的配置檔案了,這時我們可以在 預設的配置檔案 application.properties 中加入以下配置即可
spring.profiles.active=prod
配置資料庫
SpringBoot 的配置檔案有兩種格式,一種是 .properties 格式(以上栗子都是用的這種)還有一種用的是 .yaml 格式。以下是用 yaml 方式配置。這兩種格式並無好壞之分,純看個人使用習慣。我就比較喜歡 yaml 格式,因為看起來比較簡潔。
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=true username: 你的資料庫名稱 password: 你的資料庫密碼 jpa: hibernate: ddl-auto: update#ddl-auto:設為update 表示每次都重新建表 show-sql: true
注意事項
- 使用 yaml 格式需要注意一點就是 鍵值對冒號後面,必須空一格 。
- application.properties 配置中文值的時候,讀取出來的屬性值會出現亂碼問題。但是 application.yml 不會出現亂碼問題。原因是,Spring Boot 是以 iso-8859 的編碼方式讀取 application.properties 配置檔案。
解決第二點,只需加入 spring.http.encoding.charset=UTF-8 配置即可。
後語
以上就是我對 SpringBoot 配置檔案的理解與使用,當然以上只是介紹了一下 SpringBoot 配置檔案的幾個用法,它的用法還有非常多,想要深入使用還是需要各位多多深入實踐。最後,對 Python 、Java 感興趣請長按二維碼關注一波,我會努力帶給你們價值,如果覺得本文對你哪怕有一丁點幫助,請幫忙點好看,讓更多人知道。
另外,關注之後在傳送 1024 可領取免費學習資料。資料內容詳情請看這篇舊文: Python、C++、Java、Linux、Go、前端、演算法資料分享