網(wǎng)站首頁 編程語言 正文
【Spring Boot】Spring Boot 配置文件詳解(application.yml、application-dev.yml、application-test.yml )
作者:CodeCharm——CC 更新時間: 2024-03-21 編程語言一、application.yml 基礎(chǔ)配置
是 Spring Boot 中用于配置應(yīng)用程序?qū)傩缘闹饕渲梦募弧_@個文件通常用于配置應(yīng)用程序的一般性屬性,包括數(shù)據(jù)庫連接、日志級別、端口號等。下面是一些常見的在 application.yml 中配置的示例:
# 服務(wù)器端口
server:
port: 8080
# 數(shù)據(jù)庫連接配置
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
# 應(yīng)用程序自定義屬性
myapp:
name: My Spring Boot App
version: 1.0
上述示例展示了一些常用的配置項,但根據(jù)應(yīng)用程序的需求,你可以在 application.yml 中配置各種屬性。Spring Boot 非常靈活,可以根據(jù)屬性的前綴識別屬性,并將其綁定到對應(yīng)的 Java 對象上,以方便在代碼中使用。
需要注意的是,application.yml 文件采用 YAML(YAML Ain’t Markup Language)語法,它使用縮進(jìn)和冒號來表示層次關(guān)系。因此,正確的縮進(jìn)對于保持文件的結(jié)構(gòu)是很重要的。
二、配置文件在項目中起到的具體作用
在 Spring Boot 中,可以通過屬性文件(比如 application.yml 或 application.properties)來配置應(yīng)用程序的屬性。這些屬性可以直接映射到 Java 對象中,從而在代碼中方便地使用。
1、@ConfigurationProperties
注解
-
提供了一種方便的方式,可以將配置文件中的屬性映射到 Java
對象的字段上。這樣做的一個常見的方式是使用屬性的前綴來進(jìn)行匹配。以下是一個簡單的示例:# 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 // 可以在這里添加其他的業(yè)務(wù)邏輯 }
在這個例子中,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(); // 連接到數(shù)據(jù)庫的邏輯... } }
通過這種方式,你可以將配置文件中的屬性映射到 Java
對象上,并在代碼中方便地使用這些屬性。這種配置方式可以幫助你集中管理應(yīng)用程序的配置,并提高代碼的可維護(hù)性。
2、@Value
注解
- 使用 @Value 注解可以直接將配置文件中的屬性值注入到 Spring Bean 中的字段或方法參數(shù)上。
@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")
這些方式都允許在應(yīng)用程序中方便地訪問配置文件中的屬性值,開發(fā)者可以根據(jù)具體情況選擇最適合的方式。
三、Spring Boot 的其他配置文件
在 Spring Boot 中,除了常見的 application.yml
或 application.properties
外,你還可以使用其他自定義的配置文件。Spring Boot 提供了以下幾種常見的配置文件:
1、application.properties/application.yml
- 默認(rèn)的主配置文件,Spring Boot 應(yīng)用會自動加載該文件。存放應(yīng)用程序的主要配置。
2、application-{profile}.properties/application-{profile}.yml:
- 可以根據(jù)不同的環(huán)境配置不同的屬性文件,
{profile}
表示環(huán)境名稱。
例如,application-dev.properties
用于開發(fā)環(huán)境,application-prod.properties
用于生產(chǎn)環(huán)境。
3、bootstrap.properties/bootstrap.yml:
- 用于 Spring Cloud 應(yīng)用,是 Spring Cloud Config 服務(wù)的默認(rèn)配置文件。
存放一些啟動時需要優(yōu)先加載的配置,比如連接到 Config Server 的配置。
4、application-{profile}.properties/application-{profile}.yml:
- 可以根據(jù)不同的環(huán)境配置不同的屬性文件,{profile} 表示環(huán)境名稱。 例如,application-dev.properties
用于開發(fā)環(huán)境,application-prod.properties 用于生產(chǎn)環(huán)境。
5、application-{label}.properties/application-{label}.yml:
- 用于 Git 和配置服務(wù)器的外部化配置,
{label}
表示 Git 的標(biāo)簽。
例如,application-v1.properties 用于版本 1。
這些文件命名規(guī)范允許你根據(jù)不同的環(huán)境、配置標(biāo)簽或者配置文件類型組織和管理你的配置信息。Spring Boot 會根據(jù)上述規(guī)則自動加載相應(yīng)的配置文件。
四、多配置文件使用哪個
Spring Boot 在啟動時會加載默認(rèn)的主配置文件,即 application.yml
或 application.properties
。如果有不同環(huán)境的配置文件,如 application-test.yml
或 application-dev.yml
,Spring Boot 會根據(jù)當(dāng)前激活的環(huán)境來選擇加載對應(yīng)的配置文件。
1、設(shè)置 spring.profiles.active
指定激活環(huán)境
你可以通過在 application.yml 或 application.properties 中設(shè)置 spring.profiles.active
屬性來指定激活的環(huán)境。例如:
spring:
profiles:
active: dev
上述配置表示激活 dev
環(huán)境,因此 Spring Boot 會加載 application-dev.yml
文件中的配置。
如果沒有設(shè)置 spring.profiles.active
屬性,Spring Boot 將默認(rèn)使用主配置文件的配置。
2、命令行參數(shù)指定環(huán)境
除了通過屬性文件來設(shè)置激活的環(huán)境外,你還可以通過命令行參數(shù)、系統(tǒng)屬性、環(huán)境變量等方式來指定激活的環(huán)境。例如,通過命令行參數(shù)啟動時指定環(huán)境:
java -jar your-application.jar --spring.profiles.active=dev
這樣就會加載 application-dev.yml
的配置。
五、Springboot中配置文件的加載順序
application.yml、application.properties和bootStrap.yml加載順序
以jar包發(fā)布springboot項目時
默認(rèn)會先使用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
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2023-07-22 macos通過homebrew安裝多版本node
- 2022-09-17 使用cache加快編譯速度的命令詳解_相關(guān)技巧
- 2022-01-30 visibilitychange事件在移動端開發(fā)的使用
- 2022-08-11 C#中using關(guān)鍵字的使用方法示例_C#教程
- 2022-11-26 Mongodb?如何將時間戳轉(zhuǎn)換為年月日日期_MongoDB
- 2023-01-23 React中props使用介紹_React
- 2022-07-24 搭建React?Native熱更新平臺的詳細(xì)過程_React
- 2022-06-17 C語言?詳細(xì)講解數(shù)組參數(shù)與指針參數(shù)_C 語言
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支