3

有没有办法让 spring (v.3.0) 解析文件中的占位符.properties?我知道我可以自己写PropertyPlaceholderConfigurer,但我一直在寻找一种“更清洁”的方式来做到这一点。

编辑:

更具体地说,我真正想做的是替换.sql文件中存在的占位符。因此占位符的值存储在文件中,.properties但占位符在.sql文件中使用。

4

3 回答 3

5

一个PropertyPlaceholderConfigurerbean 将替换其他 bean 定义中的占位符。具体来说,它会在实际创建 bean 之前更新 bean 定义中的 bean 属性值。因此,如果您想使用PropertyPlaceholderConfigurerSQL 来修改,则需要将该 SQL 嵌入到 bean 属性值中。此类不能替换任意文件中的属性。

如果你想替换任意文件中的占位符,这个PropertyPlaceholderHelper类是一个更好的选择。例如,方法

String replacePlaceholders(String value, Properties properties)

value将用从properties返回重写的字符串中获取的属性替换占位符。您可以轻松地调整/包装它以替换文件中的占位符。

于 2010-10-12T13:45:10.900 回答
2

PropertyPlaceholderConfigurer可以提供任意Properties对象(通过properties属性)。

于 2010-10-12T13:09:12.360 回答
0

我不知道你是否使用maven,但如果你这样做,我会在部署时使用资源过滤将属性注入sql文件(ant也有类似的解决方案)并让SpringPropertyPlaceholderConfigurer使用相同的属性文件在运行时。这样一来,一切都在它所属的地方(毕竟,属性的最佳位置是 .properties 文件)。

于 2010-10-12T15:20:09.900 回答