2013-11-04 86 views
2

我有一個屬性文件,其中我想修改某些性質爲包括用戶ID(以及可能的其它運行時加載的值),像下面...可更換的佔位符文件

emailer.queuename=Emailer.${user} 

...使物業價值可能會成爲,在這個例子中,在讀Emailer.SMITHJ

我想擴展Properties類並覆蓋getProperty method的,但我也需要確保春季會相應時修改屬性上下文使用PropertyPlaceholderConfigurer(我看到我可以覆蓋這個類中的convertPropertyValue)。

但有整齊的,我一舉兩得的辦法嗎?

感謝

==================================

UPDATE:

情況下,我已經發現了簡單的解決方案,就是使用系統屬性(如$ {user.name}),並自該PropertyPlaceholderConfigurersystemPropertiesMode設置爲fallback Spring會自動排序。但是,我仍然需要爲直接使用屬性文件的情況創建繼承類,或者僅將值注入到它所使用的類中。

回答

0

如果我理解正確的話,你希望在屬性文件來代替某些特性,因爲它們是用來解決bean的配置屬性之前。

正如你所說,bean的屬性被PropertyPlaceholderConfigurer這是一個BeanFactoryPostProcessor解決。要執行前期處理,您還需要一個BeanFactoryPostProcessor並實施Ordered接口來指定它何時運行。

,如果您註冊或者你BeanFactoryPostProcessor小號編程,他們將在註冊的順序和前執行任何其他bean的通過其他方式註冊。