spring源码解析,vip视频解析源码

本文深入解析Spring的表达式处理,从整体流程到具体细节,包括:1) 表达式被转化为指令集的过程;2) QLPatternNode在模式匹配中的作用;3) 如何构造表达式树;4) 最终如何执行指令集。通过详细步骤,揭示了Spring如何将字符串表达式转换并执行。
摘要由CSDN通过智能技术生成

一. 主要流程分析
1:整体处理被 ExpressRunner 托管,可以在这个类里开启一些运行时辅助功能,比如 是否使用Cache中的指令集、是否输出详细的执行指令信息 等等,。

首先调用这个方法 ExpressRunner#execute(Sting,IExpressContext):Object ,第一个参数是表达式,第二个是上下文。

2:然后调用 ExpressRunner#parseInstructionSet(String): InstructionSet,把表达式转为指令集。这个方法主要调用两个方法

ExpressParse#parse(String):ExpressNode
ExpressNode 属性有值有类型,还有左子节点集合和右子节点集合,可以理解为树的根节点。
先调用
ExpressParse#splitWords(String): Word[] 根据定义的 splitWord 进行解析把单词提取出来,分隔符号有:空格、换行、位操作、四则运算、Boolean运算符号、等于、注释符号等等,Word 有行号、列号、index、值属性。
再调用
ExpressParse#(transferWord2ExpressNode(String, Word[]): ExpressNode ,ExpressNode 是带有类型的返回值,这里会根据 Word 的值来判断是什么类型,比如 数字、字符串、boolean、关键字等。NodeTypeManager 中保存了很多关键字,像四则运算符就是关键字。根据 Word 的值和 类型构造 ExpressNode。

到这里还只是单词,还没有树的概念,下面会转为树。

QLPattern#findMatchStatementWithAddRootOptimizeStack(Mat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值