如何在不同配置文件的属性中获得多个默认值?

时间:2018-08-13 15:05:33

标签: java spring spring-boot

我有一些具有相同配置的微服务,每个微服务都取决于Spring概要文件。 @ConfigurationProperties接受我在YAML应用程序配置文件中的值。我想将此配置移至通用项目,而不移至微服务YAML配置。

问题是我对不同的配置文件有2种不同的配置。我可以使用@Value来注入默认值,但是我只能这样做一次。有没有一种方法可以让多个默认值取决于特定的Spring配置文件?

在我的项目中,我们使用Java配置,而不是XML。

3 个答案:

答案 0 :(得分:1)

您是说像下面吗?我在同一yml文件(application.yml)中具有两个具有相同属性(app.port)的配置文件A1和B1。配置文件由---

分隔
   ---
    spring:
      profiles: A1
    app.port: 8080
   ---
    spring:
      profiles: B1
    app.port: 9090
    ---

答案 1 :(得分:1)

如果您想从公共位置读取属性,请在微服务中写入bootstrap.yml并删除application.yml

bootstrap.yml:

spring:
  config:
    location: file:/home/external/properties/location/
    name: application
  profiles:
    active: dev

文件位置:/home/external/properties/location/

假设您需要开发和生产环境,然后将此3个属性文件保存在此位置。

application.yml

application-dev.yml

application-prod.yml

Spring Boot首先读取application.yml属性。如果在dev中设置了活动配置文件bootstrap.yml,则application.yml的值将被application-dev.yml 覆盖

对于其他值,只需更改bootstrap.yml中的微服务的活动配置文件即可。

答案 2 :(得分:0)

根据我的搜索,我无法根据需要解决此问题。可能spring-cloud-config可以解决我的问题,但是我不想实现这一问题。我更改了库,不再需要这些单独的配置。