Spring Boot入門(二):獲取配置檔案值
本篇部落格主要講解下在Spring Boot中如何獲取配置檔案的值。
1. 使用yaml配置檔案
Spring Boot預設生成的配置檔案為application.properties,不過它也支援yaml語言的配置檔案,
兩者之間的差別並不是很大,只是yaml語言的配置檔案層次結構更明顯,可讀性更強,因此目前使用的更多一些。
我們假設本來application.properties的配置為:
spring.main.banner-mode=off
那麼如何將配置檔案切換為application.yml呢?
首先刪除掉原來的配置檔案application.properties,新增配置檔案application.yml,新增方式如下:
然後修改application.yml為:
spring:
main:
banner-mode: "off"
執行結果和原來使用properties配置檔案時一致。
2. 使用@Value註解獲取配置檔案值
首先在application.yml中新增如下配置:
book:
author: wangyunfei
name: spring boot
然後修改啟動類的程式碼為:
package com.zwwhnly.springbootaction; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @SpringBootApplication public class SpringbootActionApplication { @Value("${book.name}") private String bookName; @Value("${book.author}") private String bookAuthor; @RequestMapping("/") public String index() { return "book name is:" + bookName + " and book author is:" + bookAuthor; } public static void main(String[] args) { SpringApplication.run(SpringbootActionApplication.class, args); } }
執行專案,在瀏覽器中輸入http://localhost:8080/,會看到如下資訊:
這種方式和在Spring專案中的使用方式一樣,更多的細節,可以檢視我之前總結的部落格:
Spring入門(九):執行時值注入。
3. 使用@ConfigurationProperties註解獲取配置檔案值
Spring Boot還提供了@ConfigurationProperties
註解來獲取配置檔案值,該種方式可把配置檔案值和一個Bean自動關聯起來,使用起來更加方便而且型別安全,建議使用這種方式。
首先,在application.yml中新增如下配置:
author: name: wangyunfei age: 32
然後,新建類AuthorSettings,新增@Component
註解和@ConfigurationProperties
註解:
package com.zwwhnly.springbootaction;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "author")
public class AuthorSettings {
private String name;
private Integer age;
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;
}
}
這裡的重點是@ConfigurationProperties
註解,它的prefix屬性用來指定配置的字首,如本例中的author。
然後修改啟動類的程式碼為:
package com.zwwhnly.springbootaction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class SpringbootActionApplication {
@Autowired
private AuthorSettings authorSettings;
@RequestMapping("/")
public String index() {
return "author name is " + authorSettings.getName() + " and author age is " + authorSettings.getAge();
}
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
}
執行專案,在瀏覽器中輸入http://localhost:8080/,會看到如下資訊:
4. 使用Profile實現多環境配置管理
一般情況下,我們開發的應用程式都會有多套環境, 如dev環境,qa環境,prod環境,那麼如何實現多套環境下的配置管理呢?
其實在Spring Boot下,我們可以使用Profile來實現,接下來講解下具體的實現方式。
首先,新建2個配置檔案:application-dev.yml,application-prod.yml。
此時的專案結構如下圖所示:
如果有的同學比較喜歡用properties檔案,可以用下圖中的方式新建:
預設情況下,啟動的埠號為8080,如果我們希望在dev環境使用埠號8082,在prod環境使用埠號8083,那麼可以修改配置檔案如下:
application-dev.yml新增如下配置:
server:
port: 8082
application-prod.yml新增如下配置:
server:
port: 8083
執行專案,如下圖所示:
我們會發現,仍然使用的是預設的埠號8080,那麼如何指定使用dev或者prod環境的埠呢?
我們需要在application.yml新增如下配置:
spring:
profiles:
active: dev
此時,再次執行專案,會發現使用的是埠號8082,也就是application-dev.yml檔案中配置的。
如果希望使用prod環境的,可以修改配置為:
spring:
profiles:
active: prod
執行結果為:
關於Spring專案中Profile的使用可以檢視我之前總結的部落格:Spring入門(七):Spring Profile使用講解。
5. 原始碼及參考
原始碼地址:https://github.com/zwwhnly/springboot-action.git,歡迎下載。
汪雲飛《Java EE開發的顛覆者:Spring Boot實戰》
SpringBoot - 多Profile使用與切換
IDEA如何建立.properties檔案
6. 最後
歡迎掃碼關注微信公眾號:「申城異鄉人」,定期分享Java技術乾貨,讓我們一起進步。
相關推薦
Spring Boot入門(二):獲取配置檔案值
本篇部落格主要講解下在Spring Boot中如何獲取配置檔案的值。 1. 使用yaml配置檔案 Spring Boot預設生成的配置檔案為application.properties,不過它也支援yaml語言的配置檔案, 兩者之間的差別並不是很大,只是yaml語言的配置檔案層次結構更明顯,可讀性更強,因此目
Spring Boot入門 (二) :無xml配置的實現
無xml配置的實現 自Spring3.X 以後 spring 提供了很多的註解來代替XML檔案的配置,最核心的是下面兩個註解。 ::@Configuration:: 標註該類是配置類,類似於我們定義的applicationContext.xml ::@B
Spring Boot入門二:使用ThymeLeaf+表單驗證
Thymeleaf提供了一個用於整合Spring MVC的可選模組,在應用開發中,你可以使用Thymeleaf來完全代替JSP,或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目標在於提供一種可被瀏覽器正確顯示的、格式良
使用Spring框架入門二:基於註解+XML配置的IOC/DI的使用
bsp hot sources hierarchy osi pan ioc clas operate 一、簡述 本文主要講使用註解+xml配合使用的幾種使用方式。基礎課程請看前一節。 二、步驟 1、為Pom.xml中引入依賴:本例中使用的是spring-context
Spring Boot 入門(一):入門案例
Springboot 入門 入門案例 建立spring boot專案 在pom.xml 檔案,我們需要新增兩部分依賴。 — 讓我們的專案繼承spring-boot-starter-parent 的工程 — 加入spring-boot-starter-we
Spring Boot入門篇-預設安全配置
問題: Spring Boot訪問時,有預設的安全配置,需要提供使用者名稱和密碼進行Basic Auth。 配置資訊: #設定使用者 security.user.name=root #設定密碼 security.user.password=root 解決方案: 取消安全配置
Spring Boot入門一:在Eclipse中使用Spring boot
新建的專案目錄大概如下 整體目錄結構和Spring專案一樣,只不過Spring boot的配置檔案遷移到了application.yml(或者application.propertis)。專案的入口為BootTestApplication.java的main函式入口。 在maven配置的pom.xml裡
spring boot學習二:Spring Boot自動裝配分析與實戰
Web application conditions:@ConditionalOnWebApplication和@ConditionalOnNotWebApplication,當專案是web專案,或者不是web專案的條件註解 SpEL expression conditions:@Conditional
Spring boot入門二(HelloWorld)
萬事從簡到難,我們也從helloWorld開始,後面就會自然而然的都會了。 springBoot構建一個基礎工程是非常之容易,我們僅需加兩行配置即可。 server: port:8087 servlet: context-p
Spring Boot筆記二:快速創建以及yml文件自動註入
conf 一個 pan .... 幾分鐘 ont 分鐘 重要 ext 上個筆記寫了如何自己去創建Spring boot,以及如何去打jar包,其實,還是有些麻煩的,我們還自己新建了幾個文件夾不是。 Idea可以讓我們快速的去創建Spring boot應用,來
Spring Boot入門(三):使用Scheduled註解實現定時任務
發布 configure code tps enables err except rup .com 在程序開發的過程中,經常會使用到定時任務來實現一些功能,比如: 系統依賴於外部系統的非核心數據,可以定時同步(每天同步一次) 系統內部一些非核心數據的統計計算,可以定時計算
Spring Boot入門(六):使用MyBatis訪問MySql資料庫(註解方式)
本系列部落格記錄自己學習Spring Boot的歷程,如幫助到你,不勝榮幸,如有錯誤,歡迎指正! 本篇部落格我們講解下在Spring Boot中使用MyBatis訪問MySql資料庫的簡單用法。 1.前期準備 假設你的機器已經安裝好了MySql,我們先執行如下語句建立資料庫和表: CREATE DATAB
Spring Boot入門(七):使用MyBatis訪問MySql資料庫(xml方式)
本系列部落格帶你一步一步的學習Spring Boot,如幫助到你,不勝榮幸,如有錯誤,歡迎指正! 本篇部落格我們講解下在Spring Boot中使用MyBatis訪問MySql資料庫(xml方式)的簡單用法。 本系列其它文章如下所示: Spring Boot入門(一):使用IDEA建立Spring Boo
Spring Boot入門(一):搭建Spring Boot專案
從本篇部落格開始,我們開始進入Spring Boot的世界,它的出現使Spring的開發變得更加簡潔,因此一經推出受到眾多程式設計師的喜愛。 作為Spring Boot系列的第一篇部落格,我們先來講解下如何搭建Spring Boot專案。 如果你直接就使用的是Spring Boot,建議你有時間可以學習下S
SpringBoot用@ConfigurationProperties獲取配置檔案值
SpringBoot的配置檔案有yml和properties兩種,看一些文章說yml以資料為中心,比較好。個人覺得properties更好用,所以這裡以properties格式為例來說。 我們都知道@Value 註解可以從配置檔案讀取一個配置,如果只是配置某個值,比如 某一個域名,配置為
SpringBoot 入門之二:獲取Properties中的值,通過類配置來替代原SpringXML的配值和注入方式
•application.properties •application.yml person.last-name=\u674E\u56DB person.age=12 person.birth=2017/12/15 person.boss=false person.maps.k
Spring Boot 入門(三): 自動化配置實現
自動化配置實現 我們在上章編寫入門案例的時候,我們使用的是Spring Mvc 作為我們的表現層框架,但是我們都知道我們要使用Spring Mvc 我們就需要在web.xml檔案中配置Spring Mvc 的前端控制器DispatcherServlet。但是我們
Spring Boot乾貨系列:(二)配置檔案解析
Spring Boot使用“習慣優於配置”(專案中存在大量的配置,此外還內建了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的專案快速執行起來。所以,我們要想把Spring Boot玩的溜,就要懂得如何開啟各個功能模組的預設配置,這就需要了解Spring Boo
Spring Boot 入門(十二):報表匯出,對比poi、jxl和esayExcel的效率
本片部落格是緊接著Spring Boot 入門(十一):整合 WebSocket, 實時顯示系統日誌寫的 關於poi、jxl和esayExcel的介紹自行百度。 jxl最多支援03版excel,所以單個sheet頁面最多隻能匯出65536條資料。 我直接將excel匯入到瀏覽器並開啟,以下統計匯出時長指將資
Spring Boot 入門(十三):整合Hasor的Dataway模組,幹掉後臺,自動配置介面
終於出湖北了,封閉2個月,家裡沒電腦,感覺好久沒自主擼程式碼啊啊啊啊啊啊啊啊啊啊啊啊啊。 連線上篇文章Spring Boot 入門(十二):報表匯出,對比poi、jxl和esayExcel的效率,繼續從入門到入坑。 dataWay剛剛開源,具體介紹可以去官網看https://www.hasor.net/web