[英]Spring configuration based on multiple active profiles
我的应用程序包含Linux和Windows等2个不同目标环境的划分,以及DTAP的划分。 是否可以基于多个活动配置文件加载不同的属性文件?
我们当前的设置包含一个使用ant处理的文件夹结构:
视窗:
Linux的:
目标是拥有{OS-active}-{environment-active} -application.properties之类的内容。 为8个活动环境之一加载正确的属性,但还要基于OS激活基本属性。
有没有一种方法可以使用Spring配置文件直接使用Spring来做到这一点?
我将执行属性:
@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
它在科特林,但我想您有主意!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.