SpringBoot 的參數(shù)配置示例全解析
當(dāng)然了解,Spring Boot 的參數(shù)配置是其核心特性之一,也是它實(shí)現(xiàn)“約定大于配置”理念的關(guān)鍵。它極大地簡(jiǎn)化了傳統(tǒng) Spring 應(yīng)用中繁瑣的 XML 配置。
一、核心概念:application.properties與application.yml
Spring Boot 默認(rèn)使用這兩種文件進(jìn)行配置(二者選其一即可,.yml 更常用)。
application.properties (傳統(tǒng)鍵值對(duì)格式)
server.port=8081 spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=secret logging.level.com.example.demo=debug
application.yml (YAML 格式,層次感更強(qiáng),推薦使用)
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
logging:
level:
com.example.demo: debugYAML 注意事項(xiàng):縮進(jìn)必須使用空格,不能使用 Tab 鍵,冒號(hào)后面必須有一個(gè)空格。
二、配置的加載位置與優(yōu)先級(jí)
Spring Boot 會(huì)從以下位置按從高到低的優(yōu)先級(jí)加載 application 配置文件(高優(yōu)先級(jí)的配置會(huì)覆蓋低優(yōu)先級(jí)的配置):
- 當(dāng)前項(xiàng)目根目錄下的
/config子目錄 - 當(dāng)前項(xiàng)目根目錄
- classpath 下的
/config包 (即src/main/resources/config) - classpath 根路徑 (即
src/main/resources)
最佳實(shí)踐:在開(kāi)發(fā)時(shí),將通用配置放在 src/main/resources/application.yml 中。在打包部署時(shí),可以在 JAR 包所在目錄創(chuàng)建一個(gè) config 文件夾,里面放一個(gè) application.yml 來(lái)覆蓋開(kāi)發(fā)環(huán)境的配置(如數(shù)據(jù)庫(kù)連接),這樣就實(shí)現(xiàn)了配置與代碼分離。
三、外部化配置(非常強(qiáng)大)
除了配置文件,Spring Boot 還支持多種外部配置方式,優(yōu)先級(jí)高于 application.yml。這在容器化部署(如 Docker)時(shí)尤其有用。
- 命令行參數(shù)
java -jar yourapp.jar --server.port=8888 --spring.datasource.url=jdbc:mysql://prod-server:3306/proddb
- 操作系統(tǒng)環(huán)境變量
- Spring Boot 會(huì)自動(dòng)識(shí)別形如
SPRING_DATASOURCE_URL的環(huán)境變量(注意大小寫(xiě)和下劃線(xiàn))。
- Spring Boot 會(huì)自動(dòng)識(shí)別形如
- Profile-specific 配置(多環(huán)境配置)
- 這是管理不同環(huán)境(開(kāi)發(fā)、測(cè)試、生產(chǎn))配置的最佳方式。
- 在通用的
application.yml中,通過(guò)spring.profiles.active屬性來(lái)激活特定環(huán)境的配置。 - 配置文件命名規(guī)則:
application-{profile}.yml
- 例如:
application-dev.yml(開(kāi)發(fā)環(huán)境)application-test.yml(測(cè)試環(huán)境)application-prod.yml(生產(chǎn)環(huán)境)
application.yml
spring:
profiles:
active: dev # 默認(rèn)激活開(kāi)發(fā)環(huán)境激活方式:
- 在配置文件中設(shè)置(如上所示)。
- 命令行激活:
java -jar yourapp.jar --spring.profiles.active=prod - JVM 參數(shù):
-Dspring.profiles.active=test - 環(huán)境變量:
export SPRING_PROFILES_ACTIVE=prod
四、如何在代碼中獲取配置值?
@Value 注解 (適用于單個(gè)屬性)
@Component
public class MyComponent {
@Value("${server.port}")
private int serverPort;
@Value("${app.message: Hello Default}") // 使用冒號(hào)指定默認(rèn)值
private String message;
// ...
}@ConfigurationProperties 注解 (推薦,用于綁定一組配置)
這是更類(lèi)型安全、更面向?qū)ο蟮姆绞健?/p>
步驟 1:在 application.yml 中定義配置
app:
user:
name: "Alice"
age: 30
email: "alice@example.com"
hobbies:
- reading
- hiking步驟 2:創(chuàng)建一個(gè)配置類(lèi)來(lái)綁定這些屬性
@Component
@ConfigurationProperties(prefix = "app.user") // 前綴是 app.user
@Data // Lombok 注解,自動(dòng)生成 getter/setter
// 或者也可以手動(dòng)寫(xiě) getter 和 setter
public class UserProperties {
private String name;
private Integer age;
private String email;
private List<String> hobbies;
}步驟 3:在需要的地方注入并使用
@Service
public class MyService {
@Autowired
private UserProperties userProperties;
public void doSomething() {
System.out.println("User name: " + userProperties.getName());
System.out.println("User hobbies: " + userProperties.getHobbies());
}
}別忘了在啟動(dòng)類(lèi)上添加 @EnableConfigurationProperties 注解(但如果你像上面一樣在配置類(lèi)上使用了 @Component,則不需要)。
五、常用配置示例
# 服務(wù)器配置
server:
port: 8080
servlet:
context-path: /api # 應(yīng)用上下文路徑
# 數(shù)據(jù)源配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
# JPA 配置
jpa:
hibernate:
ddl-auto: update # 生產(chǎn)環(huán)境不要用 create-drop 或 update
show-sql: true
# 日志配置
logging:
level:
root: info
org.springframework.web: debug
com.example: trace
file:
name: logs/myapp.log # 輸出到文件
# 自定義配置
myapp:
feature:
enabled: true
api-url: https://api.example.com總結(jié)
Spring Boot 的參數(shù)配置系統(tǒng)非常靈活和強(qiáng)大,其核心思想是:
- 約定大于配置:提供了大量默認(rèn)配置,開(kāi)箱即用。
- 配置外部化:允許你通過(guò)文件、命令行、環(huán)境變量等多種方式覆蓋默認(rèn)配置,輕松適應(yīng)不同環(huán)境。
- 類(lèi)型安全綁定:通過(guò)
@ConfigurationProperties可以輕松地將一組配置映射到 Java Bean 上,是管理自定義配置的首選方式。
到此這篇關(guān)于SpringBoot 的參數(shù)配置示例全解析的文章就介紹到這了,更多相關(guān)SpringBoot 參數(shù)配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java?延時(shí)隊(duì)列及簡(jiǎn)單使用方式詳解
這篇文章主要介紹了Java延時(shí)隊(duì)列簡(jiǎn)單使用方式,通過(guò)本文學(xué)習(xí)知道延時(shí)隊(duì)列是什么可以用來(lái)干什么,本文通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08
Spring Boot 2 Thymeleaf服務(wù)器端表單驗(yàn)證實(shí)現(xiàn)詳解
這篇文章主要介紹了Spring Boot 2 Thymeleaf服務(wù)器端表單驗(yàn)證實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Java Enum和String及int的相互轉(zhuǎn)化示例
這篇文章主要介紹了Java Enum和String及int的相互轉(zhuǎn)化示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Java基礎(chǔ)高級(jí)綜合練習(xí)題撲克牌的創(chuàng)建
今天小編就為大家分享一篇關(guān)于Java基礎(chǔ)高級(jí)綜合練習(xí)題撲克牌的創(chuàng)建,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01
Java中synchronized實(shí)現(xiàn)原理詳解
這篇文章主要介紹了Java中synchronized實(shí)現(xiàn)原理詳解,涉及synchronized實(shí)現(xiàn)同步的基礎(chǔ),Java對(duì)象頭,Monitor,Mark Word,鎖優(yōu)化,自旋鎖等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-11-11
5分鐘讓你快速掌握java8 stream常用開(kāi)發(fā)技巧
這篇文章主要給大家介紹了關(guān)于java8 stream常用開(kāi)發(fā)技巧的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
SpringBoot使用FastExcel實(shí)現(xiàn)多級(jí)表頭動(dòng)態(tài)數(shù)據(jù)填充導(dǎo)出
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何使用FastExcel實(shí)現(xiàn)多級(jí)表頭動(dòng)態(tài)數(shù)據(jù)填充導(dǎo)出功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-12-12
Springboot項(xiàng)目平滑關(guān)閉及自動(dòng)化關(guān)閉腳本
這篇文章主要為大家詳細(xì)介紹了Springboot項(xiàng)目平滑關(guān)閉及自動(dòng)化關(guān)閉腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05

