網站首頁 編程語言 正文
【Spring Boot】Spring Boot 配置文件詳解(application.yml、application-dev.yml、application-test.yml )
作者:CodeCharm——CC 更新時間: 2024-03-21 編程語言一、application.yml 基礎配置
是 Spring Boot 中用于配置應用程序屬性的主要配置文件之一。這個文件通常用于配置應用程序的一般性屬性,包括數據庫連接、日志級別、端口號等。下面是一些常見的在 application.yml 中配置的示例:
# 服務器端口
server:
port: 8080
# 數據庫連接配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydatabase
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
# 日志級別
logging:
level:
root: INFO
com.example.mypackage: DEBUG
# 應用程序自定義屬性
myapp:
name: My Spring Boot App
version: 1.0
上述示例展示了一些常用的配置項,但根據應用程序的需求,你可以在 application.yml 中配置各種屬性。Spring Boot 非常靈活,可以根據屬性的前綴識別屬性,并將其綁定到對應的 Java 對象上,以方便在代碼中使用。
需要注意的是,application.yml 文件采用 YAML(YAML Ain’t Markup Language)語法,它使用縮進和冒號來表示層次關系。因此,正確的縮進對于保持文件的結構是很重要的。
二、配置文件在項目中起到的具體作用
在 Spring Boot 中,可以通過屬性文件(比如 application.yml 或 application.properties)來配置應用程序的屬性。這些屬性可以直接映射到 Java 對象中,從而在代碼中方便地使用。
1、@ConfigurationProperties
注解
-
提供了一種方便的方式,可以將配置文件中的屬性映射到 Java
對象的字段上。這樣做的一個常見的方式是使用屬性的前綴來進行匹配。以下是一個簡單的示例:# application.yml myapp: database: url: jdbc:mysql://localhost:3306/mydatabase username: root password: password
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "myapp.database") public class DatabaseProperties { private String url; private String username; private String password; // Getters and setters // 可以在這里添加其他的業務邏輯 }
在這個例子中,DatabaseProperties 類的屬性(
url
、username
、password
)會與
application.yml 文件中myapp.database
下的屬性相匹配。Spring Boot 會自動將這些屬性值注入到
DatabaseProperties 實例中。然后,你可以在其他組件中注入 DatabaseProperties,并直接使用其中的屬性:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class DatabaseService { private final DatabaseProperties databaseProperties; @Autowired public DatabaseService(DatabaseProperties databaseProperties) { this.databaseProperties = databaseProperties; } public void connectToDatabase() { String url = databaseProperties.getUrl(); String username = databaseProperties.getUsername(); String password = databaseProperties.getPassword(); // 連接到數據庫的邏輯... } }
通過這種方式,你可以將配置文件中的屬性映射到 Java
對象上,并在代碼中方便地使用這些屬性。這種配置方式可以幫助你集中管理應用程序的配置,并提高代碼的可維護性。
2、@Value
注解
- 使用 @Value 注解可以直接將配置文件中的屬性值注入到 Spring Bean 中的字段或方法參數上。
@Value("${property.name}") private String propertyName;
3、Environment
對象
-
通過 Environment 對象獲取配置屬性。
@Autowired private Environment env; public void someMethod() { String propertyValue = env.getProperty("property.name"); }
4、 @PropertySource
注解引入外部屬性文件
-
使用 @PropertySource 注解可以在配置類中引入外部的屬性文件。
public class MyConfiguration { @Value("${custom.property}") private String customProperty; }
5、@ConfigurationPropertiesScan
注解(Spring Boot 2.2+)
-
這個注解允許在指定的包及其子包中掃描
@ConfigurationProperties
注解,無需顯式聲明@ConfigurationProperties
的 Bean。@ConfigurationPropertiesScan("com.example.config")
這些方式都允許在應用程序中方便地訪問配置文件中的屬性值,開發者可以根據具體情況選擇最適合的方式。
三、Spring Boot 的其他配置文件
在 Spring Boot 中,除了常見的 application.yml
或 application.properties
外,你還可以使用其他自定義的配置文件。Spring Boot 提供了以下幾種常見的配置文件:
1、application.properties/application.yml
- 默認的主配置文件,Spring Boot 應用會自動加載該文件。存放應用程序的主要配置。
2、application-{profile}.properties/application-{profile}.yml:
- 可以根據不同的環境配置不同的屬性文件,
{profile}
表示環境名稱。
例如,application-dev.properties
用于開發環境,application-prod.properties
用于生產環境。
3、bootstrap.properties/bootstrap.yml:
- 用于 Spring Cloud 應用,是 Spring Cloud Config 服務的默認配置文件。
存放一些啟動時需要優先加載的配置,比如連接到 Config Server 的配置。
4、application-{profile}.properties/application-{profile}.yml:
- 可以根據不同的環境配置不同的屬性文件,{profile} 表示環境名稱。 例如,application-dev.properties
用于開發環境,application-prod.properties 用于生產環境。
5、application-{label}.properties/application-{label}.yml:
- 用于 Git 和配置服務器的外部化配置,
{label}
表示 Git 的標簽。
例如,application-v1.properties 用于版本 1。
這些文件命名規范允許你根據不同的環境、配置標簽或者配置文件類型組織和管理你的配置信息。Spring Boot 會根據上述規則自動加載相應的配置文件。
四、多配置文件使用哪個
Spring Boot 在啟動時會加載默認的主配置文件,即 application.yml
或 application.properties
。如果有不同環境的配置文件,如 application-test.yml
或 application-dev.yml
,Spring Boot 會根據當前激活的環境來選擇加載對應的配置文件。
1、設置 spring.profiles.active
指定激活環境
你可以通過在 application.yml 或 application.properties 中設置 spring.profiles.active
屬性來指定激活的環境。例如:
spring:
profiles:
active: dev
上述配置表示激活 dev
環境,因此 Spring Boot 會加載 application-dev.yml
文件中的配置。
如果沒有設置 spring.profiles.active
屬性,Spring Boot 將默認使用主配置文件的配置。
2、命令行參數指定環境
除了通過屬性文件來設置激活的環境外,你還可以通過命令行參數、系統屬性、環境變量等方式來指定激活的環境。例如,通過命令行參數啟動時指定環境:
java -jar your-application.jar --spring.profiles.active=dev
這樣就會加載 application-dev.yml
的配置。
五、Springboot中配置文件的加載順序
application.yml、application.properties和bootStrap.yml加載順序
以jar包發布springboot項目時
默認會先使用jar包跟目錄下的application.properties來作為項目配置文件。
如果在不同的目錄中存在多個配置文件,它的讀取順序是:
1、config/application.properties(項目根目錄中config目錄下)
2、config/application.yml
3、application.properties(項目根目錄下)
4、application.yml
5、resources/config/application.properties(項目resources目錄中config目錄下)
6、resources/config/application.yml
7、resources/application.properties(項目的resources目錄下)
8、resources/application.yml
原文鏈接:https://blog.csdn.net/weixin_45188218/article/details/135283596
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-11-23 C語言學習之關鍵字的示例詳解_C 語言
- 2022-03-15 linux系統中計劃任務介紹_Linux
- 2022-04-11 c#?理解csredis庫實現分布式鎖的詳細流程_C#教程
- 2024-03-06 Maven終端命令生成Spring-boot項目并輸出“helloworld“
- 2022-04-30 WPF在自定義文本框中實現輸入法跟隨光標_實用技巧
- 2023-03-01 Shell?$[]對整數進行數學運算實現_linux shell
- 2022-11-05 Swift?Extension擴展得使用詳細介紹_Swift
- 2022-08-06 Python?pandas庫中isnull函數使用方法_python
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支