我的应用程序包含两个不同的目标环境,例如Linux和Windows,以及一个DTAP。是否可以基于多个活动配置文件加载不同的属性文件?
我们当前的设置包含一个使用ant处理的文件夹结构:
Windows:
Linux:
目标是拥有{OS-active}-{environment-active} -application.properties之类的内容。要为8个活动环境之一加载正确的属性,但还要根据操作系统激活基本属性。
是否可以使用Spring概要文件通过现成的Spring来做到这一点?
答案 0 :(得分:0)
我将实现属性:
@Bean
@Primary
fun properties(context: AbstractApplicationContext?): PropertySourcesPlaceholderConfigurer {
val propertySourcesPlaceholderConfigurer = PropertySourcesPlaceholderConfigurer()
val yaml = YamlPropertiesFactoryBean()
val os = System.getProperty("os.name").replace(" ", "")
val resources = context?.environment?.activeProfiles
?.map { profile ->
ClassPathResource("$os-$profile-application.yml")
}?.plus(ClassPathResource("$os-base-application.yml"))
?.toTypedArray()?: emptyArray()
yaml.setResources(*resources)
propertySourcesPlaceholderConfigurer.setProperties(yaml.`object`!!)
return propertySourcesPlaceholderConfigurer
}
例如,在MacOS上,您最终会得到:
MacOSX-test-application.yml
MacOSX-base-application.yml
它在科特林,但我想你有主意!