Java 将application.yml文件转换为application.properties
我的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/ -
---
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
- 应用程序测试属性
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/