最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot配置文件切換的全面指南

 更新時(shí)間:2025年03月23日 09:20:40   作者:遙不可及387  
在SpringBoot應(yīng)用開發(fā)中,我們常常需要在不同的環(huán)境(如開發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境)中使用不同的配置,SpringBoot提供了強(qiáng)大且靈活的配置文件切換機(jī)制,使得我們能夠輕松應(yīng)對(duì)這種需求,本文將詳細(xì)介紹SpringBoot配置文件切換的相關(guān)知識(shí)與實(shí)踐,需要的朋友可以參考下

一、Spring Boot 配置文件概述

Spring Boot 支持多種類型的配置文件,最常見的是application.properties和application.yml。這些配置文件用于存儲(chǔ)應(yīng)用的各種配置屬性,例如數(shù)據(jù)庫(kù)連接信息、服務(wù)器端口、日志級(jí)別等。

(一)properties 文件

在application.properties中,配置屬性以鍵值對(duì)的形式呈現(xiàn),例如:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=123456

(二)yml 文件

application.yml使用縮進(jìn)和冒號(hào)來(lái)表示層級(jí)關(guān)系,具有更好的可讀性。相同的配置在application.yml中可以這樣寫:

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: 123456

二、多環(huán)境配置文件

為了實(shí)現(xiàn)不同環(huán)境的配置區(qū)分,Spring Boot 允許我們創(chuàng)建多個(gè)配置文件。通常的命名方式是application-{profile}.properties或application-{profile}.yml,其中{profile}代表不同的環(huán)境,比如dev(開發(fā)環(huán)境)、test(測(cè)試環(huán)境)、prod(生產(chǎn)環(huán)境)。

(一)創(chuàng)建多環(huán)境配置文件示例

假設(shè)我們有開發(fā)、測(cè)試和生產(chǎn)三種環(huán)境,對(duì)應(yīng)的配置文件如下:

1. application-dev.yml

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://dev-db:3306/mydb
    username: devuser
    password: devpass

2. application-test.yml

server:
  port: 8082
spring:
  datasource:
    url: jdbc:mysql://test-db:3306/mydb
    username: testuser
    password: testpass

3. application-prod.yml

server:
  port: 80
spring:
  datasource:
    url: jdbc:mysql://prod-db:3306/mydb
    username: produser
    password: prodpass

三、配置文件切換方式

(一)通過(guò)命令行參數(shù)

在啟動(dòng) Spring Boot 應(yīng)用時(shí),可以通過(guò)--spring.profiles.active參數(shù)指定要激活的配置文件。例如,使用命令行啟動(dòng)應(yīng)用并激活開發(fā)環(huán)境配置:

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

(二)通過(guò)系統(tǒng)屬性

在啟動(dòng)應(yīng)用的腳本中設(shè)置spring.profiles.active系統(tǒng)屬性。例如,在 Linux 環(huán)境下:

export JAVA_OPTS="-Dspring.profiles.active=dev"
java $JAVA_OPTS -jar myapp.jar

(三)在 application.properties 或 application.yml 中配置

也可以在主配置文件application.properties或application.yml中設(shè)置默認(rèn)激活的配置文件。在application.properties中:

spring.profiles.active=dev

在application.yml中:

spring:
  profiles:
    active: dev

四、配置文件優(yōu)先級(jí)

當(dāng)存在多個(gè)配置文件且都包含相同的屬性時(shí),Spring Boot 會(huì)按照一定的優(yōu)先級(jí)來(lái)加載配置。優(yōu)先級(jí)順序如下:

  • 命令行參數(shù)中的配置屬性。
  • SPRING_APPLICATION_JSON中的屬性(例如通過(guò)環(huán)境變量或系統(tǒng)屬性設(shè)置的 JSON 格式的配置)。
  • ServletConfig初始化參數(shù)。
  • ServletContext初始化參數(shù)。
  • java:comp/env中的 JNDI 屬性。
  • System.getProperties()返回的系統(tǒng)屬性。
  • System.getenv()返回的環(huán)境變量。
  • 通過(guò)RandomValuePropertySource生成的random.*屬性。
  • 應(yīng)用的application-{profile}.properties或application.yml文件中的屬性,其中{profile}為激活的配置文件。
  • application.properties或application.yml文件中的屬性。

了解配置文件優(yōu)先級(jí)有助于我們?cè)趯?shí)際開發(fā)中正確處理配置沖突問(wèn)題。

五、動(dòng)態(tài)切換配置文件

在某些場(chǎng)景下,我們可能希望在應(yīng)用運(yùn)行時(shí)動(dòng)態(tài)切換配置文件。Spring Cloud Config 提供了這樣的能力,它允許我們集中管理配置文件,并支持實(shí)時(shí)刷新配置。通過(guò)結(jié)合 Spring Cloud Bus,還可以實(shí)現(xiàn)配置的廣播更新,使多個(gè)實(shí)例同時(shí)獲取最新配置。

(一)引入依賴

在pom.xml中添加 Spring Cloud Config 和 Spring Cloud Bus 的依賴:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

(二)配置客戶端

在bootstrap.properties或bootstrap.yml中配置 Config Server 的地址和要獲取的配置文件:

spring:
  application:
    name: myapp
  cloud:
    config:
      uri: http://config-server:8888
      fail-fast: true
      retry:
        max-attempts: 5
        initial-interval: 1000
        multiplier: 1.5

(三)啟用配置刷新

在需要刷新配置的控制器或服務(wù)類上添加@RefreshScope注解,然后通過(guò)發(fā)送 POST 請(qǐng)求到/actuator/refresh端點(diǎn)來(lái)觸發(fā)配置刷新。例如:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class ConfigController {
    @Value("${myapp.config.property}")
    private String configProperty;
    @GetMapping("/config")
    public String getConfig() {
        return configProperty;
    }
}

六、總結(jié)

Spring Boot 的配置文件切換機(jī)制為我們?cè)诓煌h(huán)境下管理應(yīng)用配置提供了極大的便利。通過(guò)合理使用多環(huán)境配置文件、靈活選擇切換方式以及了解配置優(yōu)先級(jí),我們能夠高效地開發(fā)和部署穩(wěn)定可靠的 Spring Boot 應(yīng)用。同時(shí),動(dòng)態(tài)切換配置文件的能力進(jìn)一步提升了應(yīng)用的靈活性和可維護(hù)性。希望本文能夠幫助你深入理解并熟練運(yùn)用 Spring Boot 的配置文件切換功能。

以上就是SpringBoot配置文件切換的全面指南的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot配置文件切換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決cmd執(zhí)行javac報(bào)錯(cuò):不是內(nèi)部或外部命令,也不是可運(yùn)行的程序

    解決cmd執(zhí)行javac報(bào)錯(cuò):不是內(nèi)部或外部命令,也不是可運(yùn)行的程序

    剛接觸JAVA的新手可能就不知道怎么解決'JAVAC'不是內(nèi)部命令或外部命令,這篇文章主要給大家介紹了關(guān)于解決cmd執(zhí)行javac報(bào)錯(cuò):不是內(nèi)部或外部命令,也不是可運(yùn)行的程序的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Spring循環(huán)依賴之問(wèn)題復(fù)現(xiàn)詳解

    Spring循環(huán)依賴之問(wèn)題復(fù)現(xiàn)詳解

    這篇文章主要為大家詳細(xì)介紹了Spring的循環(huán)依賴什么時(shí)候會(huì)出現(xiàn)以及如何解決循環(huán)依賴,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-07-07
  • Java Socket+多線程實(shí)現(xiàn)多人聊天室功能

    Java Socket+多線程實(shí)現(xiàn)多人聊天室功能

    這篇文章主要為大家詳細(xì)介紹了Java Socket+多線程實(shí)現(xiàn)多人聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 淺析如何在Java應(yīng)用中優(yōu)雅的發(fā)送短信

    淺析如何在Java應(yīng)用中優(yōu)雅的發(fā)送短信

    很多業(yè)務(wù)場(chǎng)景里,我們都需要發(fā)送短信,比如登陸驗(yàn)證碼、告警、營(yíng)銷通知、節(jié)日祝福等等,這篇文章,我們聊聊 Java 應(yīng)用中如何優(yōu)雅的發(fā)送短信,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2023-11-11
  • java實(shí)用小技巧之判斷l(xiāng)ist是否有重復(fù)項(xiàng)簡(jiǎn)單例子

    java實(shí)用小技巧之判斷l(xiāng)ist是否有重復(fù)項(xiàng)簡(jiǎn)單例子

    這篇文章主要給大家介紹了關(guān)于java實(shí)用小技巧之判斷l(xiāng)ist是否有重復(fù)項(xiàng)的相關(guān)資料,在開發(fā)工作中我們有時(shí)需要去判斷List集合中是否含有重復(fù)的元素,需要的朋友可以參考下
    2023-10-10
  • SpringBoot?server.port配置原理詳解

    SpringBoot?server.port配置原理詳解

    這篇文章主要介紹了Spring?Boot?server.port配置原理詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)折半查找的算法過(guò)程解析

    Java數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)折半查找的算法過(guò)程解析

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)折半查找的算法過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • struts2自定義MVC框架

    struts2自定義MVC框架

    這篇文章主要為大家詳細(xì)介紹了struts2如何自定義MVC框架,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Spring中@Service注解的作用與@Controller和@RestController之間區(qū)別

    Spring中@Service注解的作用與@Controller和@RestController之間區(qū)別

    這篇文章主要介紹了Spring中@Service注解的作用與@Controller和@RestController之間的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-03-03
  • Java三大特性之封裝詳解

    Java三大特性之封裝詳解

    面向?qū)ο缶幊陶Z(yǔ)言是對(duì)客觀世界的模擬,客觀世界里成員變量都是隱藏在對(duì)象內(nèi)部的,外界無(wú)法直接操作和修改。?封裝可以被認(rèn)為是一個(gè)保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被其他類隨意訪問(wèn)。本文將來(lái)和大家詳細(xì)說(shuō)說(shuō)Java中的封裝,需要的可以了解一下
    2022-10-10

最新評(píng)論

仁怀市| 沐川县| 乾安县| 洛隆县| 乌什县| 锡林郭勒盟| 北票市| 布尔津县| 扎鲁特旗| 城市| 龙胜| 弥勒县| 柞水县| 广河县| 油尖旺区| 北安市| 石嘴山市| 宁晋县| 梅州市| 旌德县| 孙吴县| 琼结县| 桐庐县| 朝阳区| 祥云县| 吉安市| 滦南县| 利津县| 台北县| 义乌市| 永平县| 依安县| 永登县| 嘉兴市| 项城市| 兴义市| 调兵山市| 澄迈县| 城市| 甘南县| 五河县|