SpEL中 Expression 的使用
ExpressionParser expressionParser = new SpelExpressionParser();//表达式Expression expression1 = expressionParser.parseExpression("#Date");//执行 使用默认的 spring容器System.out.println(expression1.getValue());//使
ExpressionParser expressionParser = new SpelExpressionParser();
//表达式
Expression expression1 = expressionParser.parseExpression("#Date");
//执行 使用默认的 spring容器
System.out.println(expression1.getValue());
//使用自定义容器
EvaluationContext evaluationContext = new StandardEvaluationContext();
evaluationContext.setVariable("Date","2020-10-14");
//spel表达式 在指定的执行计算结果
System.out.println(expression1.getValue(evaluationContext,String.class));
ExpressionParser 通过 new SpelExpressionParser() 创建SpEL解析器
parseExpression("表达式") 会返回一个 Expression
Expression 就代表一个SpEL表达式 getValue():执行表达式结果
有多个重载方法
getValue() returen Object 是在 默认容器也就是 ApplicationContext中的计算结果
我们也可以 指定 自定义容器 在自定义容器中获取计算结果 使用getValue(EvaluationContext,class);
EvaluationContext 创建其子类 new StandardEvaluationContext() 创建自定义容器
evaluationContext.setVariable(key,value);指定容器环境
如上面测试代码
表达式 #Date 就会取到 自定义容器的 Date 对应值 2020-10-14 转换成 String 输出 2020-10-14
而 默认容器 getValue() 执行结果 就为 null
SpEL 的使用场景很多 记录 我在项目中的一个使用场景
AOP 切 注解 记录 日志
@DateLog(date = "#date")
public void extractData(Date date)
上面代码中 #date 就是一个SpEL 会获取到 传入参数 date的值
AOP
通过 Expression 解析 表达式的 '#date' 执行相应逻辑
更多推荐
所有评论(0)