自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在 Spring Boot 中加載屬性文件的七種方法

開發(fā) 前端
在Spring Boot中,屬性文件通常用于將應(yīng)用程序配置外部化。這使得我們能夠在一個(gè)集中位置管理應(yīng)用程序在不同環(huán)境中的具體行為。

環(huán)境:Spring Boot3.2.5

1. 簡介

在Spring Boot中,屬性文件通常用于將應(yīng)用程序配置外部化。這使得我們能夠在一個(gè)集中位置管理應(yīng)用程序在不同環(huán)境中的具體行為。屬性文件可以包含鍵值對(duì),這些鍵值對(duì)配置應(yīng)用程序的各個(gè)方面,如數(shù)據(jù)庫連接詳細(xì)信息、日志設(shè)置或特定于應(yīng)用程序的參數(shù)。

在本篇文章中,我們將探討在 Spring Boot 中加載屬性文件的7種方法。

2. 實(shí)戰(zhàn)案例

2.1 在 Spring Boot 中加載屬性文件

Spring Boot支持從多個(gè)位置獲取屬性。對(duì)于一個(gè)普通的應(yīng)用程序,會(huì)按照給定的順序考慮以下資源:

  • 應(yīng)用程序外部的application.properties / application.yml文件
  • 在應(yīng)用程序內(nèi)部的application.properties / application.yml文件
  • 操作系統(tǒng)環(huán)境變量
  • Java系統(tǒng)屬性
  • 命令行參數(shù)

當(dāng)使用Spring配置文件時(shí),應(yīng)用程序還可以根據(jù)激活的配置文件加載特定于配置文件的屬性文件。可以通過`spring.profiles.active`屬性傳遞要激活的配置文件。特定于配置文件的`application-{profile}.properties`文件會(huì)優(yōu)先于非特定于配置文件的屬性文件。

  • 應(yīng)用程序外的 application-{profile}.properties
  • 應(yīng)用程序外部的application.properties文件
  • 應(yīng)用程序內(nèi)的 application-{profile}.properties
  • 應(yīng)用程序內(nèi)的 application.properties
  • 操作系統(tǒng)環(huán)境變量
  • Java 系統(tǒng)屬性
  • 命令行參數(shù) 

2.2 應(yīng)用程序外部加載屬性文件

默認(rèn)情況下,Spring Boot會(huì)在項(xiàng)目的`src/main/resources`目錄中查找application.properties文件。然而,我們可以使用`spring.config.location`屬性來指定application.properties文件的外部位置。

如下,Spring Boot 從指定的外部位置(/home/app/application.properties)而不是默認(rèn)位置加載 application.properties 文件。

java -jar myapp.jar --spring.config.location=/home/app/application.properties

另一種方法是,我們可以將application.properties文件包含在一個(gè)被包含在類路徑(classpath)中的目錄中。這樣做允許我們將application.properties文件與應(yīng)用程序一起打包,但出于配置的目的,仍然可以將其外部化。

如下,Spring Boot會(huì)在類路徑中查找位于config目錄下的application.properties文件。我們可以將config目錄包含在打包后的JAR文件內(nèi),或者將其放在JAR文件外部的一個(gè)單獨(dú)目錄中。

java -jar myapp.jar --spring.config.additional-location=classpath:/config/

默認(rèn)其實(shí)也是支持從類路徑下的/config/中加載配置文件。

2.3 從默認(rèn) application.properties 加載屬性

默認(rèn)情況下,Spring Boot會(huì)在位于src/main/resources目錄下的application.properties或application.yml文件中查找屬性。我們可以使用鍵值對(duì)格式直接在這些文件中定義屬性。

spring.datasource.url=jdbc:mysql://localhost/mydb
spring.datasource.username=root
spring.datasource.password=xxxooo

Spring Boot 會(huì)自動(dòng)加載這些文件中的屬性,并將其提供給應(yīng)用程序。

2.4 加載特定于配置文件的屬性文件

此外,我們可以使用特定于配置文件的application.properties文件來定制應(yīng)用程序在不同環(huán)境或部署場景下的行為。特定于配置文件的屬性文件被命名為application-{profile}.properties,其中{profile}是配置文件的名稱。

java -jar myapp.jar --spring.profiles.active=prod

這里,Spring Boot 激活了生產(chǎn)配置文件,并從 application-prod.properties 中加載屬性。

2.5 從自定義屬性文件中加載屬性

我們還可以通過使用@PropertySource注解指定自定義屬性文件的位置來從它們中加載屬性。這允許我們將配置拆分成多個(gè)文件或從外部位置加載屬性。

@Configuration
@PropertySource("classpath:pack.properties")
public class CustomConfiguration {
  @Value("${pack.app.title}")
  private String title ;
}

你可以定義為數(shù)組形式加載多個(gè)配置文件,也可以使用@PropertySources配置多個(gè)。

2.6 通過環(huán)境變量傳遞/覆蓋屬性

如果我們只考慮一個(gè)或兩個(gè)屬性,Spring Boot允許我們使用環(huán)境變量來覆蓋這些屬性。環(huán)境變量提供了一種無需修改屬性文件即可配置應(yīng)用程序的方法,從而更容易地在不同環(huán)境中管理配置。

export SPRING_DATASOURCE_URL=jdbc:mysql://localhost/mydb

這里的spring.datasource.url屬性被SPRING_DATASOURCE_URL環(huán)境變量所覆蓋。

2.7 通過系統(tǒng)屬性傳遞/覆蓋屬性

類似于環(huán)境變量,我們可以使用系統(tǒng)屬性來覆蓋屬性。系統(tǒng)屬性可以使用JVM命令行選項(xiàng)(-Dproperty=value)或在應(yīng)用程序中通過編程方式設(shè)置。

java -jar myapp.jar -Dspring.datasource.url=jdbc:mysql://localhost/mydb

請(qǐng)注意,系統(tǒng)屬性具有比屬性文件中或環(huán)境變量中定義的屬性更高的優(yōu)先級(jí)。

責(zé)任編輯:武曉燕 來源: Spring全家桶實(shí)戰(zhàn)案例源碼
相關(guān)推薦

2016-09-28 20:05:22

2011-12-16 14:45:36

JavaJSP

2011-05-30 13:37:46

JSP

2022-05-24 14:37:49

React條件渲染

2024-07-29 08:00:00

2023-04-18 15:57:30

2022-10-27 08:09:33

2022-09-30 10:48:12

AR制造業(yè)

2025-04-08 08:01:31

2021-11-11 14:50:01

JavaScriptarry編程開發(fā)

2021-07-02 10:43:52

IT人才首席信息官人才招聘

2009-10-29 16:32:24

查看Oracle用戶的

2024-11-21 16:30:21

2022-05-09 13:35:56

云配置云安全黑客

2021-11-19 10:10:14

手機(jī)移動(dòng)設(shè)備網(wǎng)絡(luò)攻擊

2022-12-12 09:12:30

2022-04-18 10:09:52

首席信息官CIO

2023-06-08 09:00:00

2016-12-27 19:19:51

2016-10-14 14:30:19

警報(bào)警報(bào)疲勞安全和運(yùn)維團(tuán)隊(duì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)