如何从 spring boot / java 添加/读取多个数据中心属性

问题描述

我正在开发一个应用程序,我将在其中从属性文件传递 1 到 N 个数据中心详细信息。例如:...

myapp.ds1.domain.name=https://www.ds1.com
myapp.ds1.domain.username=us1
myapp.ds1.domain.password=pw1

myapp.ds2.domain.name=https://www.ds2.com
myapp.ds2.domain.username=us2
myapp.ds2.domain.password=pw2

.
.
.
.

myapp.dsn.domain.name=https://www.dsn.com
myapp.dsn.domain.username=usn
myapp.dsn.domain.password=pwn

我不知道我会得到多少固定的数据中心信息,但是无论那里有什么,我都需要在我的 Spring Boot 代码中阅读它。

我知道是否要读取可以使用的特定值

@Value("${myapp.ds.username:default}")

但是这个动态配置,怎么做呢?任何线索都会有所帮助

解决方法

@Value 注解用于读取 Java 代码中的环境或应用程序属性值。

@Value("${spring.application.name}")

如果在运行应用程序时未找到该属性,Spring Boot 将抛出非法参数异常,因为无法解析占位符 'spring.application.name' in value "${spring.application.name}"。

为了解决占位符问题,我们可以使用下面给出的语法为属性设置默认值

@Value("${property_key_name:default_value}")

例如:-

@Value("${myproperty_key_name:mydefault_value}")

请注意,您将使用@Value 读取属性配置文件。