有没有办法让 spring (v.3.0) 解析文件中的占位符.properties
?我知道我可以自己写PropertyPlaceholderConfigurer
,但我一直在寻找一种“更清洁”的方式来做到这一点。
编辑:
更具体地说,我真正想做的是替换.sql
文件中存在的占位符。因此占位符的值存储在文件中,.properties
但占位符在.sql
文件中使用。
有没有办法让 spring (v.3.0) 解析文件中的占位符.properties
?我知道我可以自己写PropertyPlaceholderConfigurer
,但我一直在寻找一种“更清洁”的方式来做到这一点。
编辑:
更具体地说,我真正想做的是替换.sql
文件中存在的占位符。因此占位符的值存储在文件中,.properties
但占位符在.sql
文件中使用。
一个PropertyPlaceholderConfigurer
bean 将替换其他 bean 定义中的占位符。具体来说,它会在实际创建 bean 之前更新 bean 定义中的 bean 属性值。因此,如果您想使用PropertyPlaceholderConfigurer
SQL 来修改,则需要将该 SQL 嵌入到 bean 属性值中。此类不能替换任意文件中的属性。
如果你想替换任意文件中的占位符,这个PropertyPlaceholderHelper
类是一个更好的选择。例如,方法
String replacePlaceholders(String value, Properties properties)
value
将用从properties
返回重写的字符串中获取的属性替换占位符。您可以轻松地调整/包装它以替换文件中的占位符。
PropertyPlaceholderConfigurer
可以提供任意Properties
对象(通过properties
属性)。
我不知道你是否使用maven,但如果你这样做,我会在部署时使用资源过滤将属性注入sql文件(ant也有类似的解决方案)并让SpringPropertyPlaceholderConfigurer
使用相同的属性文件在运行时。这样一来,一切都在它所属的地方(毕竟,属性的最佳位置是 .properties 文件)。