Spring SpEL 表达式示例
小于 1 分钟
Spring SpEL 表达式示例
//SpEL 解析器
SpelExpressionParser parser = new SpelExpressionParser();
//上下文数据
User user = new User();
user.setId(1);
user.setName("张三");
user.setCreateTime(LocalDate.now());
user.setAge(18);
user.setBalance(BigDecimal.TEN);
StandardEvaluationContext context = new StandardEvaluationContext(user);
//数值计算
System.out.println(parser.parseExpression("1+1").getValue()); //2
System.out.println(parser.parseExpression("age*(age+2)").getValue(context)); //360
System.out.println(parser.parseExpression("balance*2").getValue(context)); //20
System.out.println(parser.parseExpression("balance/2").getValue(context)); //5
System.out.println(parser.parseExpression("balance-3").getValue(context)); //7
System.out.println(parser.parseExpression("balance^2").getValue(context)); //100
//字符串拼接
System.out.println(parser.parseExpression("'name: '+name").getValue(context)); //name: 张三
//Map
System.out.println(parser.parseExpression("{name: name}").getValue(context)); //{name=张三}
//方法调用
System.out.println(parser.parseExpression("pow(balance, 4)").getValue(context)); //10000
//逻辑运算
System.out.println(parser.parseExpression("balance > 20").getValue(context)); //false
System.out.println(parser.parseExpression("balance == 20 or balance == 10").getValue(context)); //true
System.out.println(parser.parseExpression("balance == 10 and balance < age").getValue(context)); //true