簡體   English   中英

自動化 Spring Cloud Profile

[英]Automatization Spring Cloud Profile

其實有點小問題。

我想切換我的 bootstrap.yml 的 url

它看起來如下:

spring:
  application:
    name: <project-name>
  profiles:
    active: dev
  cloud:
    config:
      uri: http://<git-repository>:8080
      fail-fast: false

這有效,但我想要一個屬性或任何可以在本地或其他環境中切換的東西。

我嘗試查看此文檔,但沒有看到任何適合我的工作。

我認為 Spring Cloud 與任何 Spring 應用程序沒有任何不同,因此您可以使用 Spring 配置文件。

在這個答案中提出了類似的建議: https : //stackoverflow.com/a/22759706/6908551

您可以為您的雲配置 uri 定義一個單獨的.yml文件,例如cloud-config-dev.ymlcloud-config-prod.yml 然后,對於 Java 配置,您可以使用以下內容:

@Configuration
public class MyApplicationConfiguration {

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
        String activeProfile = System.getProperty("spring.profiles.active", "production"); 
        String ymlFilename = "cloud-config-" + activeProfile + ".yml";

        PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
        configurer.setLocation(new ClassPathResource(ymlFilename));

        return configurer;
    }
}

我會按環境定義一個 bootstrap.yml 文件。
src/main/resources定義一個默認的 bootstrap.yml 並為每個環境定義一個特定的 bootstrap.yml 文件。

然后有多種方式。
不詳盡:

1)對於配置文件不同的每個環境,通過使用預期值指定系統屬性spring.cloud.bootstrap.location來運行你的 spring boot jar,例如:
java -jar ... -Dspring.cloud.bootstrap.location=bootstrap-dev.yml ... .
這會覆蓋該文件的當前位置。

2) 利用 Spring Boot 配置文件功能:與bootstrap.yml兼容。 例如,如果啟用了開發配置文件,則將使用類路徑中的bootstrap-dev.properties

我傾向於使用第一種方式,因為這對於非 Spring Boot 用戶來說更為明確。

來源: 1.3 更改 Bootstrap 屬性的位置

暫無
暫無

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

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