在通过配置文件对系统进行参数配置时,有时需要更好的理解参数值的具体意义,往往采用计算表达式的方式设置,例如1天换成秒数为86400,如果写成24 * 60 * 60就很清晰的表达是一天的秒数。但是这个表达式通过properties的方式获取为字符串,这里就需要动态计算这个表达式。
ScriptEngine这个对象专门用来处理动态执行表达式,主要调用其eval方法动态执行(类似于javascript中的eval方法),其返回结果为object对象;针对计算表达式的返回结果是double类型,所以这里先将object转换为double,然后根据实际需要进行强制转换。
配置文件如下:
#标准缓存时长(单位:秒) #默认为1天(24 * 60 * 60),也可以为86400 std_cache_time_out=24 * 60 * 60
其用法如下:
ScriptEngineManager _mgr = new ScriptEngineManager(); //这里只调用javascript执行器,可以执行javascript脚本,除此之外还可以调用其他类型的脚本 ScriptEngine _enginer = _mgr.getEngineByName("javascript"); try{ String expression = properties.getProperty("std_cache_time_out"); Object result = _enginer.eval(expression); _MAX_CACHE_TIME_OUT = (long)Double.parseDouble(result.toString()); } }catch(ScriptException e){ e.printStackTrace(); }
以ScriptEngine这个接口提供的方法请参阅ScriptEngine使用API
时间: 2024-10-03 14:03:17