将Spring引导配置拆分为多个属性文件而不必指定环境变量/系统属性的任何方法
这里是Spring Boot的新手,不过是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
.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
的问题确实在于它不能很好地处理概要文件。