在另一个属性键中使用的Spring Boot属性值

huangapple go评论67阅读模式
英文:

Spring-boot property value used in another property key

问题

在我的Spring Boot项目中,我希望在另一个属性键中使用属性值:

server.mode=mock

server.protocol.mock=http
server.host.mock=my.host-mock.org
...

server.protocol.prod=https
server.host.prod=my.host-prod.org
...

我想根据"server.mode"的值使用相关的属性键"server.protocol.{value}"。

我该如何实现这个?谢谢帮助。

英文:

In my spring boot project, I want to use a property value in another property key:

server.mode=mock

server.protocol.mock=http
server.host.mock=my.host-mock.org
...

server.protocol.prod=https
server.host.prod=my.host-prod.org
...

I want to depending on "server.mode" value use the related property key server.protocol.{value}

How could I do this?
Thanks for help

答案1

得分: 3

你可以使用Spring配置文件来为不同的部署环境设置不同的属性配置。

通过使用属性文件,你可以为每个配置文件创建一个配置文件,然后根据活跃的配置文件来让Spring Boot使用相应的属性配置。

application-dev.properties

server.scheme=http
server.host=my.host-mock.org

application-prod.properties

server.scheme=http
server.host=my.host-mock.org

然后你需要通过设置 spring.profiles.active 属性来告诉Spring Boot要使用哪个配置文件。当在云平台上部署应用程序时(如Cloud Foundry或Kubernetes),通过环境变量 SPRING_PROFILES_ACTIVE 来设置活跃的配置文件会更加方便。

更多关于配置文件的信息可以参考官方的 Spring Boot文档

英文:

You can use spring profiles, where you can setup different property configurations for different deployment environments.

Using property files, you can create a property file per profile and then have spring boot use the right property configuration depending on the active profile.

在另一个属性键中使用的Spring Boot属性值

application-dev.properties

server.scheme=http
server.host=my.host-mock.org

application-prod.properties

server.scheme=http
server.host=my.host-mock.org

You would then have to tell spring boot which profile to use by setting it in the spring.profiles.active property. When deploying to the cloud with application manifests (like Cloud Foundry or Kubernetes), then it is convenient to set this via an environment variable SPRING_PROFILES_ACTIVE.

See the official spring-boot documentation for more information about profiles.

答案2

得分: 2

这可以通过在代码(或相应的XML)中获取值时使用以下格式来实现:

@Value("${server.protocol.${server.mode}}")
private String mode;
英文:

This can be achieved using the following format while fetching the value in code (or the correpsonding xml) where you are using it:

@Value("${server.protocol.${server.mode}}")
private String mode;

huangapple
  • 本文由 发表于 2020年10月1日 00:45:25
  • 转载请务必保留本文链接:https://go.coder-hub.com/64142145.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定