簡體   English   中英

使用 bootstrap.yml 覆蓋命令行 Spring 屬性

[英]override command line Spring properties with bootstrap.yml

我有一個 tomcat box,它已經設置了 spring 活動配置文件,作為每次通過 catalina 部署 spring 應用程序時的命令行參數。

我正在使用 spring 雲配置服務器,因此在配置客戶端中,我在 bootstrap.yml 中指定活動配置文件,但正如我之前提到的,它被 tomcat 命令行參數覆蓋。

如何在引導上下文加載時使用我的 boostrap.yml 覆蓋通過 tomcat 傳遞的命令行參數,以便我可以將活動配置文件從 bootstrap.yml 傳遞到配置服務器。

Tomcat 設置環境命令(我無法更改,因為我無權訪問)

JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/path -Dspring.profiles.active=e2"

引導程序.yml

spring:
  profiles:
    active: e2,cron
  cloud:
    config:
      uri: http://localhost:8888
  application:
    name: heartbeat_monitor. 

命令行參數(-Dspring.profiles.active=e2)將始終覆蓋您的屬性文件,無論您在 yaml 文件中指定多少個硬編碼配置文件。 我建議您添加要在運行時以編程方式設置的其他配置文件,並在 .yml 擴展名之前保留兩個帶有-profilename屬性文件。

這可以按如下方式完成:

主應用程序

public static void main(String[] args) {
    SpringApplication app = new SpringApplication(DemoApplication.class);
    app.setAdditionalProfiles("cron");
    app.run(args);
}

bootstrap-e2.yml

// Keep all the properties which is specific to e2 profile.

bootstrap-cron.yml

   // Keep all the properties which is specific to cron profile.

通過這種方式,您可以同時使用兩個配置文件。但是,如果一個屬性在兩個引導程序文件中是通用的,那么程序將從該引導程序文件中選擇其profile與運行時參數匹配的屬性: -Dspring.profiles.active

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM