2010-10-12 23 views
2

有沒有辦法讓spring(v.3.0)在不是.properties的文件中解析佔位符? 我知道我可以寫我自己的PropertyPlaceholderConfigurer但我正在尋找一種「更乾淨」的方式來做到這一點。讓Spring用不同的文件類型替換佔位符(除了Spring的配置)

編輯:

更具體地講,就是我真正想要做的是,以取代目前在.sql文件佔位符。因此,佔位符的值存儲在.properties中,但佔位符在.sql文件中使用。

+0

你認爲比「PropertyPlaceholderConfigurer」更清潔嗎? – GaryF 2010-10-12 13:07:00

+0

@GaryF - 我認爲@Drahakar指的是PropertyPlaceholderConfigurer只適用於bean定義,所以要使用它,他需要將他的SQL嵌入到bean定義文件中。 – 2010-10-12 13:56:12

回答

5

A PropertyPlaceholderConfigurer bean將在其他bean定義中替換佔位符。具體來說,它在bean實際創建之前更新bean定義中的bean屬性值。因此,如果您想使用PropertyPlaceholderConfigurer修改SQL,那麼需要將該SQL嵌入到bean屬性值中。這個類不能替換任意文件中的屬性。

如果你想在任意文件中替換佔位符,PropertyPlaceholderHelper類是更好的選擇。例如,該方法

String replacePlaceholders(String value, Properties properties) 

將與返回重寫串從properties採取屬性替換value佔位符。您可以輕鬆地調整/換行以替換文件中的佔位符。

2

PropertyPlaceholderConfigurer可以提供任意Properties對象(通過properties屬性)。

+0

+1,然後你可以使用commons-configuration來加載任何你想要的格式。 – Bozho 2010-10-12 13:10:56

+0

+1 - 我已經(ab-)使用PPC數月了,但我沒有注意到這個功能。 – 2010-10-12 13:37:48

0

我不知道你是否使用maven,但如果你這樣做,我會使用resource filtering在部署時將屬性注入到sql文件中(也有類似ant的解決方案),並讓Spring的PropertyPlaceholderConfigurer使用運行時相同的屬性文件。這樣一切都屬於它的屬性(畢竟,屬性的最佳位置是一個.properties文件)。

+0

這不是部署時間。這是WAR文件構建時間。 – 2010-10-15 23:26:25

+0

爲真。我想我的意思是部署在執行'mvn deploy'的意義上 – 2010-10-16 19:16:57

相關問題