读书人

扩充Properties用mvel来解析表达式减

发布时间: 2013-02-25 10:23:36 作者: rapoo

扩展Properties,用mvel来解析表达式减少重复输入
有时候,Properties中总有一些项目,其实重复部分很多。
就想着能不能象 编程一样,前面声明一个变量,后面可以用${variale}形式引用
研究了一下Properties的代码,做了如下扩展
以实现 .properties 文件中这样的定义。
basePackage = com.corp.project
modelPackage = ${basePackage}.model
controllerPackage = ${basePackage}.controller

表达式解析用了MVEL2的TemplateRuntime.

<dependency>
<groupId>org.mvel</groupId>
<artifactId>mvel2</artifactId>
<version>2.0.19</version>
</dependency>

public class EvaluateProperties extends Properties {    private Map<String, Object> context = new HashMap<String, Object>();    @Override    public synchronized Object put(Object key, Object value) {        if (key == null) {            throw new IllegalArgumentException("Key should not be null");        }        Object resultValue;        if (value != null) {            String valueText = value == null?"":value.toString();            resultValue = TemplateRuntime.eval(valueText, this.context);        } else {            resultValue = "";        }        this.context.put(key.toString(), resultValue);        return super.put(key, resultValue);    }}

读书人网 >编程

热点推荐