Java 将application.yml文件转换为application.properties

Java 将application.yml文件转换为application.properties,java,spring-boot,netflix-eureka,application.properties,Java,Spring Boot,Netflix Eureka,Application.properties,我的application.yml文件如下。如何将其转换为application.properties 我正在尝试,但如何在同一个文件中写入多个属性。这给了我重复的错误 --- spring: profiles: peer1 eureka: instance: hostname: peer1 client: serviceUrl: defaultZone: http://peer2/eureka/ -

我的application.yml文件如下。如何将其转换为application.properties 我正在尝试,但如何在同一个文件中写入多个属性。这给了我重复的错误

 ---
  spring:
    profiles: peer1
  eureka:
     instance:
        hostname: peer1
     client:
        serviceUrl:
           defaultZone: http://peer2/eureka/

 ---
 spring:
    profiles: peer2
 eureka:
    instance:
      hostname: peer2
    client:
      serviceUrl:
         defaultZone: http://peer1/eureka/

使用属性文件时,同一文件中的每个配置文件不能有多个“部分”,这是一项仅适用于Yaml的功能。 您必须创建多个属性文件,每个配置文件一个,如下所述:

要对属性文件执行相同的操作,可以使用application-${profile}.properties指定特定于配置文件的值

您将有一个包含公共值的主application.properties文件,然后每个配置文件有一个application-${profile}.properties文件,其中包含与环境/配置文件相关的值


最后,您必须在运行应用程序时将活动配置文件设置为系统属性,或直接在主application.properties文件中设置,如下所述:

您需要创建不同的文件,例如:

  • application-dev.properties
  • application-prod.properties
  • 应用程序测试属性
然后在application.properties中使用以下命令取消激活配置文件:


IntelliJ和其他IDE提供了相同的插件

例如-


安装插件,右键单击yaml或属性文件并选择-“转换yaml和属性文件”

使用Spring Boot 2.4,可以使用开关
Spring.config.activate.on profile
实现此目的,只有当活动配置文件设置为
myprofile
时,才会设置在
spring.config.activate.on profile=myprofile
之后定义的所有内容。在给定的示例中,您将执行以下操作:

#-- Peer1 Config
spring.config.activate.on-profile=peer1
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2/eureka/
#-- Peer2 Config
spring.config.activate.on-profile=peer2
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1/eureka/

有关更多信息,请参阅。

您可以做的最接近的事情就是拥有一个元素数组。我不明白您试图实现什么。你应该澄清这一点,否则你不会得到任何高质量的答案。但我需要一起运行所有实例。这些配置文件是我的eureka实例,我需要将它们组成集群并一起运行。因此,如何使其中一个同时处于活动状态。您可以有多个活动配置文件:只需在列表中提供分隔的配置文件,例如:
-Dspring.profiles.active=peer1,peer2
如果您正在运行多个Eureka实例,并且希望以交换方式访问它们,那么您可能应该运行负载平衡器(如nginx)然后将你的应用指向那个,或者你应该定义一个包含URL列表的属性。按照您现在尝试的方式,它不能作为yaml或属性文件工作。哦,等等,您是在尝试遵循本教程:还是类似的内容?如果是:您不需要“一起运行所有实例”。您需要有多个配置文件和多个容器,在每个容器中,只有一个配置文件处于活动状态。
#-- Peer1 Config
spring.config.activate.on-profile=peer1
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2/eureka/
#-- Peer2 Config
spring.config.activate.on-profile=peer2
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1/eureka/