【问题标题】:Setting variable value based on spring profile根据弹簧轮廓设置变量值
【发布时间】:2017-07-20 07:28:13
【问题描述】:

如何根据区域给变量赋值?

让我们说

system properties, dev-url="dev-abc.com", prod-url="prod-abc.com"qa-url="qa-abc.com"

@Value( #{systemProperties. ??? )
String url;

【问题讨论】:

  • 您的意思是您拥有所有这 3 种 url 变量,并且您想根据您的 spring 配置文件设置 String url?
  • 你显然必须有不同的.properties。可以根据环境获取

标签: spring spring-boot spring-data spring-annotations spring-config


【解决方案1】:

如果您在属性文件中包含所有属性,则可以使用:

 @Value("${spring.profiles.active}-url") String url;

【讨论】:

  • 是的,我只使用一个属性文件,我对使用 3 个属性文件不感兴趣我尝试了您的以下建议 @Value(#{systemProperties[${spring.profiles.active}'- url'] ) 字符串网址;但它不起作用。spel 是否需要任何更改?
  • 使用@Value("${spring.profiles.active}-url") 字符串url;
【解决方案2】:

我建议尽可能避免使用个人资料。现代应用程序应该努力遵循rule 3 of 12 Factor app

十二因素应用程序将配置存储在环境变量中

使用 Spring Boot,您将拥有环境变量 URL 并在 Spring Boot 中将其用作 ${URL}。每个环境都会将此环境变量配置为正确的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-16
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多