spring-cloud-config - Spring Cloud Server 为同一个应用程序提供多个属性文件
问题描述
假设我有applicationA
3 个属性文件:
-> applicationA
- datasource.properties
- security.properties
- jms.properties
如何将所有属性移动到 Spring Cloud 配置服务器并将它们分开?
截至今天,我已经配置了只读取一个属性文件的配置服务器,因为这似乎是标准方式。配置服务器获取的这个文件似乎是通过使用 spring.application.name 来解决的。在我的情况下,它只会读取一个具有此名称的文件:
-> applicationA.properties
如何添加配置服务器要解析的其他文件?
解决方案
不可能按照您的要求进行。Spring Cloud Config Server 使用 NativeEnvironmentRepository,即:
{@link EnvironmentRepository} 的简单实现,它使用 SpringApplication 和通过普通协议定位的配置文件。生成的环境由使用应用程序名称作为配置文件主干 (spring.config.name) 和环境名称作为 Spring 配置文件定位的属性源组成。
因此,基本上每次客户端从 Config Server 请求属性时,它都会使用 SpringApplicationBuilder 创建 ConfigurableApplicationContext。它使用下一个配置属性启动:
String config = application;
if (!config.startsWith("application")) {
config = "application," + config;
}
list.add("--spring.config.name=" + config);
因此,属性文件的可能名称将仅application.properties(or .yml)
是请求配置的配置客户端应用程序名称 - 在您的情况下applicationA.properties
。
但是你可以“作弊”。在配置服务器配置中,您可以添加此类属性
spring:
cloud:
config:
server:
git:
search-paths: '{application}, {application}/your-subdirectory'
在这种情况下,Config Server 将在少数目录中搜索相同的属性文件名,您可以使用子目录将属性分开。因此,通过上面的配置,您将能够从以下位置加载配置:
applicationA/application.properies
applicationA/your-subdirectory/application.properies
推荐阅读
- javascript - 为什么这个简单的 async - promise - reduce 代码有效?
- spring - MyBatis - 如何连接同一个表中的多个列
- amazon-web-services - 在 Lambda@Edge 中创建签名 Cookie 以进行受限分发
- angular - 角度 8 表格重置,值无法正常工作
- docker - lerna bootstrap 命令不安装本地纱线包
- c - 使用 MPI_Type_create_subarray 做二维循环分布的例子
- mysql - zabbix连接远程数据库的问题
- flutter - 如何将 zip 文件导入 Visual Studio 代码
- ruby-on-rails - Active Admin 使用 ransack 返回错误
- python - PyCharm:无法创建解释器错误:权限被拒绝 - Windows 10