自动化弹簧云配置文件



实际上有一点问题。

我想切换我的引导程序.yml 的网址

它看起来如下:

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

这有效,但我想要一个属性或任何可以切换的东西,如果在本地或其他环境中。

我尝试查看此文档,但没有看到任何适合我的工作。

我认为SpringCloud与任何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 引导 jar,例如 :
java -jar ... -Dspring.cloud.bootstrap.location=bootstrap-dev.yml ...
这将覆盖该文件的当前位置。

2(利用弹簧启动配置文件功能:bootstrap.yml兼容。 例如,如果启用了开发配置文件,则将使用类路径中的bootstrap-dev.properties

我倾向于使用第一种方法,因为这对于非 Spring 引导用户来说更明确。

来源 : 1.3 更改引导属性的位置

最新更新