我目前正在将现有应用程序迁移到 Spring Boot 1.2(使用 Mule 3;与 Spring 4.2 不兼容)。这个应用程序包含一个库提供的(我无法修改)servlet,它通过读取一些包含 bean 定义的应用程序包含的 XML 文件来创建几个 ClasspathXmlApplicationContexts 来执行 Mule 引导过程。
我的问题是这个 XML 文件包含几个占位符,应该根据活动配置文件以不同的方式解析(我已经将这些变量存储在 application.yml 文件中,具有不同的配置文件),但是 applicationConfig PropertySource 在由新应用程序上下文创建的标准环境。
我可以将 YML 文件转换为 .properties 文件并在每个 XML 文件中创建一个新的 PropertyPlaceholderConfigurer,指向相同的应用程序-#{systemProperties['spring.profiles.active']}.properties,但是:
我会失去 Boot 使用约定和优先级将 .properties 文件定位在不同内部/外部位置的灵活性,这对于要在不同环境中迁移的应用程序来说听起来很方便。
如果我需要多次添加相同的定义,我想有一种我忽略的编程方式。
有谁知道我如何将 applicationConfig PropertySource 的内容添加到所有新创建的 ApplicationContexts 中而无需修改创建它们的类?Spring Boot 1.2 没有 EnvironmentPostProcessor 的强大功能。