2017-06-15 67 views
0

我目前正在将现有的应用程序迁移到Spring Boot 1.2(使用Mule 3;与Spring 4.2不兼容)。这个应用程序包含一个库提供的(我不能修改的)servlet,它通过用bean定义读取一些包含应用程序的XML文件来创建几个ClasspathXmlApplicationContext来执行Mule引导过程。将applicationConfig PropertySource添加到新环境中

我的问题是,这个XML文件包含几个占位符,应根据活动配置文件以不同的方式解析占位符(我将这些变量存储在application.yml文件中,具有不同的配置文件),但applicationConfig PropertySource isn' t可用于新应用程序上下文创建的StandardEnvironment。

我可以将YML文件转换为.properties文件,并在每个这样的XML文件中创建一个新的PropertyPlaceholderConfigurer,指向同一个应用程序 - #{systemProperties ['spring.profiles.active']}。properties,但:

  1. 我会失去定位在使用常规和优先级,这对于一个应用程序,通过的,在不同环境迁移会听起来方便不同的内部/外部位置的属性文件中启动的灵活性。

  2. 如果我需要多次添加相同的定义,我想有一个程序化的方式来做到这一点,我忽略了。

有谁知道我怎么可能applicationConfig PropertySource的内容添加到所有新创建的ApplicationContexts,而无需访问和修改创建它们的类? Spring Boot 1.2不具备EnvironmentPostProcessor的精美功能。

回答

0

以备将来参考:我已经通过实施搜索的applicationConfig的一个所有PropertySources并提出对System.getProperties它的所有属性()图代替ApplicationListener,在那里他们解析所有的ApplicationContexts通过设置解决了这个XML文件上的空白。