Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Spring引导配置拆分为多个属性文件而不必指定环境变量/系统属性的任何方法_Spring_Spring Boot_Configuration_Properties File - Fatal编程技术网

将Spring引导配置拆分为多个属性文件而不必指定环境变量/系统属性的任何方法

将Spring引导配置拆分为多个属性文件而不必指定环境变量/系统属性的任何方法,spring,spring-boot,configuration,properties-file,Spring,Spring Boot,Configuration,Properties File,这里是Spring Boot的新手,不过是Spring框架的长期用户 我正在寻找一种将外部化配置拆分为多个.properties文件的方法,以提高可读性和可管理性 我已经看到:能够在spring.config.name中指定配置文件名列表(顺便说一句,在引导参考文档中似乎没有提到,如果我错了,请纠正我)可以完美地解决我的问题,但是,该配置属性只能通过系统属性或环境变量指定。如果我试图在应用程序.properties文件中指定它,它将被忽略。对于spring.config.additional l

这里是Spring Boot的新手,不过是Spring框架的长期用户

我正在寻找一种将外部化配置拆分为多个
.properties
文件的方法,以提高可读性和可管理性

我已经看到:能够在
spring.config.name
中指定配置文件名列表(顺便说一句,在引导参考文档中似乎没有提到,如果我错了,请纠正我)可以完美地解决我的问题,但是,该配置属性只能通过系统属性或环境变量指定。如果我试图在
应用程序.properties
文件中指定它,它将被忽略。对于
spring.config.additional location
,也会发生同样的情况。我理解这种情况是因为,当读取
application.properties
时,告诉Spring Boot搜索不同的外部化配置文件名已经太迟了。但是,这不是一个合适的解决方案,因为我分割配置的方式应该是应用程序的使用者不应该知道的“实现细节”,所以我不希望使用者指定外部参数,否则我的应用程序会出现问题

我认为应该提供这样做的方法。可能是
.properties
文件的某种导入机制,或者甚至在
application.properties
中指定
spring.config.name
的功能(可以接受一些已知和合理的限制)

我所能找到的最好方法是使用
@PropertySource
,但这是不了解配置文件的:除非您使用一些,或者您(如果激活了多个配置文件,这些配置文件将被破坏),否则您将得不到
应用程序.properties
配置文件特定文件的好处

我找不到一个“正式的方法”来实现这一点,除了一些声明说他们正在推广使用单个(可能是巨大的…)外部化配置文件之外。从GitHub上的帖子反应来看,这个职位似乎不太受欢迎,而且我想这确实是一个缺少的基本功能。多年来,我一直在Spring框架中处理多个属性文件(使用XML配置),我从未觉得只有一个大文件会更好

如果我理解正确的话,在Boot 1.x中使用
@ConfigurationProperties
location
属性在某种程度上是可能的,但是在Boot 2.x中缺少该属性


有什么建议吗?

您尝试过Spring Profile吗

您可以做的是创建
application-file1.properties/yml
application-file2.properties/yml
,并将其置于配置位置,然后添加
spring.profile.active=,file1,file2
。 它将加载文件

对于Pivotal Cloud Foundry,此概要文件条目可以位于
bootstrap.yml
中,或者位于
Manifest-.yml
中的应用程序的
JVM参数中。在AWS和其他云提供商上不确定


希望这会有所帮助。

您尝试过Spring Profile吗

您可以做的是创建
application-file1.properties/yml
application-file2.properties/yml
,并将其置于配置位置,然后添加
spring.profile.active=,file1,file2
。 它将加载文件

对于Pivotal Cloud Foundry,此概要文件条目可以位于
bootstrap.yml
中,或者位于
Manifest-.yml
中的应用程序的
JVM参数中。在AWS和其他云提供商上不确定


希望这会有所帮助。

正如我在问题中所写的,分析支持是可取的,但与将配置拆分为不同的
.properties
文件的需要是正交的。
@PropertySource
的问题确实在于它不能很好地处理配置文件。正如我在问题中所写的,配置文件支持是可取的,但与将配置拆分为不同的
.properties
文件的需要是正交的。
@PropertySource
的问题确实在于它不能很好地处理概要文件。