自定义表达式

Spring提供了一个可以自定义表达式的接口

package com.qbb.qmall.item;

import org.junit.Test;
import org.springframework.expression.Expression;
import org.springframework.expression.common.TemplateParserContext;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext; import java.util.Arrays; /**
* @author QiuQiu&LL (个人博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-05-27 23:33
* @Description:
*/ public class ExpressionTest { @Test
public void test01() {
// 准备一个表达式解析器
SpelExpressionParser spelExpressionParser = new SpelExpressionParser(); // 定义一个表达式字符串
String spelString = "qiuqiu&#{1+21}";// 计算表达式中的数据 // 创建一个模板表达式解析器上下文
TemplateParserContext parserContext = new TemplateParserContext(); // 解析表达式
Expression expression = spelExpressionParser.parseExpression(spelString,
parserContext); // 计算表达式,获取结果
StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariable("args", Arrays.asList(12,13,14,15)); // 计算上下文,动态计算结果,返回值为字符串
String value = expression.getValue(context, String.class);
System.out.println("value = " + value);
}
}

  • 修改字符串表达式继续测试
String spelString = "qiuqiu&#{#args[1]}";// 获取args的第二个参数

  • 修改字符串表达式继续测试
String spelString = "qiuqiu&#{#args[1] * #args[2]}";// 获取args的第二个参数

  • 修改字符串表达式继续测试
String spelString = "qiuqiu&#{#args[1] * #args[2]}:#{new String('spel').toUpperCase()}";// 调用方法

  • 修改字符串表达式继续测试
String spelString = "qiuqiu&#{#args[1] * #args[2]}:#{new String('spel').toUpperCase()}" +
"===#{T(java.lang.Math).random()}";// 调用方法

  • 修改字符串表达式继续测试
String spelString = "当前时间:#{#currentDate}";

详细的使用信息,各位小伙伴可以参考官方文档

使用SPEL自定义表达式的更多相关文章

  1. CodeGen编写自定义表达式标记

    CodeGen编写自定义表达式标记 CodeGen支持开发人员通过编写plug-in modules插件模块来定义自定义表达式标记的能力,以提供与这些标记相关联的逻辑.这种plug-in module ...

  2. Asp.Net之自定义表达式构造器(ExpressionBuilder)

    在Asp.Net的Page页面中我们经常会使用到资源文件.读取资源文件的方式为:<%$Resources:Resource1,Test1%>,这样就可以显示Resource1这个资源文件中 ...

  3. Spring3表达式语言(SpEL)学习笔记

    最新地址请访问:http://leeyee.github.io/blog/2011/06/19/spring-expression-language Spring Excpression Langua ...

  4. 7 -- Spring的基本用法 -- 12... Spring 3.0 提供的表达式语言(SpEL)

    7.12 Spring 3.0 提供的表达式语言(SpEL) Spring表达式语言(简称SpEL)是一种与JSP 2 的EL功能类似的表达式语言,它可以在运行时查询和操作对象图.支持方法调用和基本字 ...

  5. spring3表达式语言(SpEL)

    使用SpEl进行表达式操作,基本操作如下: <!--第一步,构建解析 --> ExpressionParser parser = new SpelExpressionParser(); & ...

  6. Spring系列.SpEL表达式

    Spring表达式语言 SpEL语言是一种强大的表达式语言,支持在运行时查询和操作对象.SpEL表达式不一定要创建IOC容器后才能使用.用户完全可以单独调用SpEL的API来独立的使用时SpEL表达式 ...

  7. SpEL表达式注入

    一.内容简介 Spring Expression Language(简称SpEL)是一种强大的表达式语言,支持在运行时查询和操作对象图.语言语法类似于Unified EL,但提供了额外的功能,特别是方 ...

  8. spring-表达式语言-SpEL【转】

    Spring表达式语言(Spring Expression Language)简称:SpEL 课程概要: Spring表达式语言的入门介绍 Spring表达式语言的操作范围 Spring表达式语言的运 ...

  9. 👊 Spring技术原理系列-从零开始教你SpringEL表达式使用和功能分析讲解指南(上篇)

    Spring EL表达式语言,这种语言jsp中学到的el,但是在整个spring之中其表达式语言要更加的复杂,而且支持度更加的广泛,最重要的是他可以进行方法的调用,对象的实例化,集合操作等等,但是唯一 ...

  10. Spring基础—— SpEL

    一.SpEL:Spring 表达式语言,在使用的时候类似于 EL 表达式,但是需要注意的是,SpEL 使用在 Spring Config 文件中. 二.格式:使用 #{} 作为界定符,所有在大括号中的 ...

随机推荐

  1. GPT-4 到底能帮你干点啥?

    目录 1. 从哪儿聊起呢 2. 潮起潮退 3. 遇强则强,遇我则-- 3.1 玩法一:辅助技能提升 3.2 镜头背后的故事 3.3 玩法二:综合"技术选型" 3.4 镜头背后的故事 ...

  2. Go 语言内置类型全解析:从布尔到字符串的全维度探究

    关注微信公众号[TechLeadCloud],分享互联网架构.云服务技术的全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证 ...

  3. Asp-Net-Core开发笔记:FrameworkDependent搭配docker部署

    前言 之前我写过一篇使用 docker 部署 AspNetCore 应用的文章,这种方式搭配 CICD 非常方便, build 之后 push 到私有的 dockerhub ,在生产服务器上 pull ...

  4. 文心一言 VS 讯飞星火 VS chatgpt (89)-- 算法导论8.3 2题

    二.用go语言,下面的排序算法中哪些是稳定的:插入排序.归并排序.堆排序和快速排序?给出一个能使任何排序算法都稳定的方法.你所给出的方法带来的额外时间和空间开销是多少? 文心一言: 在Go语言中,以下 ...

  5. 如何解决IOS 15提示“此App的开发者需要更新APP以在此IOS版本上正常工作”, 无法打开安装的APP的问题

    在苹果手机最新的IOS 15 beta的系统上安装自签名或者企业签名的APP时,可能会遇到如下的错误提示: 此App的开发者需要更新APP以在此IOS版本上正常工作 The developer of ...

  6. 解决 wg-quick 在 Mac 上 bash 3 无法运行的问题

    问题原因 我可以理解,开发人员不想使用苹果使用的旧bash v3.但从用户的帖子来看,安装一个较新的bash并不那么好 所以我看了wireguard的wg-quick.需要支持的唯一变化,两个bash ...

  7. Solution Set -「CF 1534」

    这 1+2? 「CF1534 A」Colour the Flag Link. 把 W / R 拉出来广搜,注意判断全空的情况. #include <bits/stdc++.h> using ...

  8. 【网络爬虫笔记】爬虫Robots协议语法详解

    Robots协议是指一个被称为Robots Exclusion Protocol的协议.该协议的主要功能是向网络蜘蛛.机器人等搜索引擎爬虫提供一个标准的访问控制机制,告诉它们哪些页面可以被抓取,哪些页 ...

  9. JAVA图搜索算法之DFS-BFS

    图算法DFS与BFS BFS和DFS代表对图进行遍历,即搜索的算法,搜索算法中常用的只要有两种算法:深度优先遍历(Depth-First-Search : DFS)和广度优先遍历(Breadth-Fi ...

  10. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-20-处理鼠标拖拽-下篇

    1.简介 上一篇中,宏哥说的宏哥在最后提到网站的反爬虫机制,那么宏哥在自己本地做一个网页,没有那个反爬虫的机制,谷歌浏览器是不是就可以验证成功了,宏哥就想验证一下自己想法,其次有人私信宏哥说是有那种类 ...