SpringBoot 的參數(shù)配置示例全解析
當然了解,Spring Boot 的參數(shù)配置是其核心特性之一,也是它實現(xiàn)“約定大于配置”理念的關鍵。它極大地簡化了傳統(tǒng) Spring 應用中繁瑣的 XML 配置。
一、核心概念:application.properties與application.yml
Spring Boot 默認使用這兩種文件進行配置(二者選其一即可,.yml 更常用)。
application.properties (傳統(tǒng)鍵值對格式)
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 格式,層次感更強,推薦使用)
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
logging:
level:
com.example.demo: debugYAML 注意事項:縮進必須使用空格,不能使用 Tab 鍵,冒號后面必須有一個空格。
二、配置的加載位置與優(yōu)先級
Spring Boot 會從以下位置按從高到低的優(yōu)先級加載 application 配置文件(高優(yōu)先級的配置會覆蓋低優(yōu)先級的配置):
- 當前項目根目錄下的
/config子目錄 - 當前項目根目錄
- classpath 下的
/config包 (即src/main/resources/config) - classpath 根路徑 (即
src/main/resources)
最佳實踐:在開發(fā)時,將通用配置放在 src/main/resources/application.yml 中。在打包部署時,可以在 JAR 包所在目錄創(chuàng)建一個 config 文件夾,里面放一個 application.yml 來覆蓋開發(fā)環(huán)境的配置(如數(shù)據(jù)庫連接),這樣就實現(xiàn)了配置與代碼分離。
三、外部化配置(非常強大)
除了配置文件,Spring Boot 還支持多種外部配置方式,優(yōu)先級高于 application.yml。這在容器化部署(如 Docker)時尤其有用。
- 命令行參數(shù)
java -jar yourapp.jar --server.port=8888 --spring.datasource.url=jdbc:mysql://prod-server:3306/proddb
- 操作系統(tǒng)環(huán)境變量
- Spring Boot 會自動識別形如
SPRING_DATASOURCE_URL的環(huán)境變量(注意大小寫和下劃線)。
- Spring Boot 會自動識別形如
- Profile-specific 配置(多環(huán)境配置)
- 這是管理不同環(huán)境(開發(fā)、測試、生產(chǎn))配置的最佳方式。
- 在通用的
application.yml中,通過spring.profiles.active屬性來激活特定環(huán)境的配置。 - 配置文件命名規(guī)則:
application-{profile}.yml
- 例如:
application-dev.yml(開發(fā)環(huán)境)application-test.yml(測試環(huán)境)application-prod.yml(生產(chǎn)環(huán)境)
application.yml
spring:
profiles:
active: dev # 默認激活開發(fā)環(huán)境激活方式:
- 在配置文件中設置(如上所示)。
- 命令行激活:
java -jar yourapp.jar --spring.profiles.active=prod - JVM 參數(shù):
-Dspring.profiles.active=test - 環(huán)境變量:
export SPRING_PROFILES_ACTIVE=prod
四、如何在代碼中獲取配置值?
@Value 注解 (適用于單個屬性)
@Component
public class MyComponent {
@Value("${server.port}")
private int serverPort;
@Value("${app.message: Hello Default}") // 使用冒號指定默認值
private String message;
// ...
}@ConfigurationProperties 注解 (推薦,用于綁定一組配置)
這是更類型安全、更面向?qū)ο蟮姆绞健?/p>
步驟 1:在 application.yml 中定義配置
app:
user:
name: "Alice"
age: 30
email: "alice@example.com"
hobbies:
- reading
- hiking步驟 2:創(chuàng)建一個配置類來綁定這些屬性
@Component
@ConfigurationProperties(prefix = "app.user") // 前綴是 app.user
@Data // Lombok 注解,自動生成 getter/setter
// 或者也可以手動寫 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());
}
}別忘了在啟動類上添加 @EnableConfigurationProperties 注解(但如果你像上面一樣在配置類上使用了 @Component,則不需要)。
五、常用配置示例
# 服務器配置
server:
port: 8080
servlet:
context-path: /api # 應用上下文路徑
# 數(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)非常靈活和強大,其核心思想是:
- 約定大于配置:提供了大量默認配置,開箱即用。
- 配置外部化:允許你通過文件、命令行、環(huán)境變量等多種方式覆蓋默認配置,輕松適應不同環(huán)境。
- 類型安全綁定:通過
@ConfigurationProperties可以輕松地將一組配置映射到 Java Bean 上,是管理自定義配置的首選方式。
到此這篇關于SpringBoot 的參數(shù)配置示例全解析的文章就介紹到這了,更多相關SpringBoot 參數(shù)配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring Boot 2 Thymeleaf服務器端表單驗證實現(xiàn)詳解
這篇文章主要介紹了Spring Boot 2 Thymeleaf服務器端表單驗證實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11
Java Enum和String及int的相互轉(zhuǎn)化示例
這篇文章主要介紹了Java Enum和String及int的相互轉(zhuǎn)化示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
5分鐘讓你快速掌握java8 stream常用開發(fā)技巧
這篇文章主要給大家介紹了關于java8 stream常用開發(fā)技巧的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
SpringBoot使用FastExcel實現(xiàn)多級表頭動態(tài)數(shù)據(jù)填充導出
這篇文章主要為大家詳細介紹了SpringBoot如何使用FastExcel實現(xiàn)多級表頭動態(tài)數(shù)據(jù)填充導出功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2025-12-12

