背景:
有些场景下,可能需要把一些java代码的表达式,做成配置化的形式,存储到db中;使用时,从db读取,这时候就需要解析java代码表达式。下面简单介绍通过SpEL 表达式 进行解析。
实际使用:
/**
* value与配置的表达式匹配
* @param value 值
* @param expressionDefinition 表达式
* @return
*/
public static boolean matchSpelExpression(String value, String expressionDefinition) {
try {
expressionDefinition = expressionDefinition.replace("#value#", value);
// spel表达式解析
ExpressionParser parser = new SpelExpressionParser();
Expression expression = parser.parseExpression(expressionDefinition);
boolean result = Boolean.parseBoolean(String.valueOf(expression.getValue()));
return result;
} catch (Exception e) {
throw new RuntimeException("matchSpelExpression error.");
}
}
表达式举例:
'#value#'.startsWith('22') and '#value#'.length()==10
'#value#'.length()>=13 and '#value#'.substring(11,12)=='3'
文档:
[1] Spring Expressions Language 官方文档
欢迎关注公众号:“架构一线”,定期分享一些实战心得,互联网前沿技术等.