当前位置:网站首页>SpEl简单使用
SpEl简单使用
2022-08-06 23:13:00 【wfsm】
SpEl: spring expression language : spring 表达式语言,是一种强大的表达式语言
虽然 SpEl 是 spring 产品组合中表达式评估的基础,但它不直接与 spring绑定,可以独立使用
1.创建SpelExpressionParser 解析器
2. 解析表达式 获取 Expression 对象
3. 设置上下文环境 StandardEvaluationContext
4. 获取值

代码:
// eval 执行一个表达式 javascript
String expl = "1+2";
SpelExpressionParser spelExpressionParser = new SpelExpressionParser();
Expression expression = spelExpressionParser.parseExpression(expl);
// 获取表达式运行结果
Object value = expression.getValue();
System.out.println("value = " + value);
获取类的值:
User user = new User(1, "waterkid", "beijing");
String spel = "#user.address";
SpelExpressionParser parser = new SpelExpressionParser();
Expression expression = parser.parseExpression(spel);
// 让 解析器 知道 将user解析到 表达式中
StandardEvaluationContext standardEvaluationContext = new StandardEvaluationContext();
standardEvaluationContext.setVariable("user",user);
Object value = expression.getValue(standardEvaluationContext);
// 根据这个 环境 去获取 user 的值
System.out.println("value = " + value);
User user = new User(1, "waterkid", "beijing");
String spel = "address";
SpelExpressionParser parser = new SpelExpressionParser();
Expression expression = parser.parseExpression(spel);
StandardEvaluationContext context = new StandardEvaluationContext();
context.setRootObject(user);
System.out.println(expression.getValue(context));
User user = new User(1, "waterkid", "beijing");
SpelExpressionParser parser = new SpelExpressionParser();
String name = parser.parseExpression("username").getValue(new StandardEvaluationContext(), user, String.class);
System.out.println("name = " + name);
获取方法返回值:
String spel = "#userService.sayHello('silly b')";
SpelExpressionParser parser = new SpelExpressionParser();
Expression expression = parser.parseExpression(spel);
StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariable("userService",new UserService());
System.out.println("-------");
Object value = expression.getValue(context);
System.out.println("value = " + value);
获取spring容器bean:如果 评估上下文 已经配置了 bean的解析器,可以使用@符号从表达式中查找 bean
// spring 中 BeanFactory 可以直接引入
@Autowired
BeanFactory beanFactory;
@Test
public void test03(){
String spel = "@userService.sayHello('silly b')";
SpelExpressionParser parser = new SpelExpressionParser();
Expression expression = parser.parseExpression(spel);
StandardEvaluationContext context = new StandardEvaluationContext();
// 解析 bean
context.setBeanResolver(new BeanFactoryResolver(beanFactory));
System.out.println(expression.getValue(context));
}
边栏推荐
- CSV文件如何使用EXCEL打开
- window 中 anaconda 下载与安装
- 自定义指令动态指令参数
- #yyds干货盘点#H3C镜像端口配置学习(二)
- Redis持久化
- 区分几进制的标志
- [ 漏洞复现篇 ] OpenSSH 命令注入漏洞 (CVE-2020-15778)
- 深度学习:可视化方法
- PAT乙级-B1023 组个最小数(20)
- Which securities company has low commission for account opening and accurate information? Is it safe to open a stock account with a mobile phone?
猜你喜欢
随机推荐
【超好懂的比赛题解】HNCPC Multi-university Training Round2 比赛题解(AHBGIK)
搞懂源码的三大条件
启牛APP是什么?请问一下手机开户股票开户安全吗?
Node connects to mysql and operates mysql
【面试】分布式系统幂等性与顺序性及分布式锁
【超好懂的比赛题解】2022 Jiangsu Collegiate Programming Contest 比赛题解
B. M-arrays
node连接mysql,并操作mysql
诛仙游戏SQL充值语句(mysql不存在则插入,存在则更新)
Julia两天极速入门学习笔记
深度学习:可视化方法
three.js 第五十五用 给shader传递uniform注意事项
cxf反向根据.net wsdl内容生成服务器端代码
2022暑期总结-兼职、学业、工作
获取抖音店铺所有商品详情
Talking about API Gateway
3000字超详细介绍文件的最基本操作方法
工业物联网 —— 新型数据库的召唤
Zabbix5.0部署+监控服务,图文详解,亲测有效!!
"NIO Cup" 2022 Nioke Summer Multi-School Training Camp 6, sign-in question GJBMA









