2017-06-15 35 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文件上的空白。

相關問題