spring组合注解实现原理(SpEL表达式工作流程)
spring组合注解实现原理(SpEL表达式工作流程)3. 定义表达式上下文对象(可选),SpEL使用EvaluationContext接口表示上下文对象,用于设置根对象、自定义变量、自定义函数、类型转换器等,SpEL提供默认实现StandardEvaluationContext;2. 定义解析器ExpressionParser实现,SpEL提供默认实现SpelExpressionParser分析解 析表达式,提供getValue简单方法用于获取表达式值;答:先了解几个概念具体工作流程如下图:SpEL表达式工作流程
思考:什么是SpEl?它干什么用的?
答: SpEl是Spring Expression Language缩写,SpEL是一种在运行期间能执行查询和操作对象的表达式语言,它通过运行期执行的表达式将值装配到Bean的属性或构造器参数中,所以表达式语言给静态Java语言增加了动态功能。
SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可以单独使用,包含了丰富的表达式用法:基本变量表达式、算数表达式、关系表达式、逻辑表达式、类相关表达式、集合表达式等。
思考:SpEL怎么工作的?
答:先了解几个概念
- 表达式:“干什么?” 表达式是表达式语言的核心.
- 解析器:“谁来干?”,用于将字符串表达式解析为表达式对象
- 上下文:“在哪干?”,表达式对象执行的环境,该环境定义变量、自定义函数等等;
- 上下文对象:“对谁干?”,上下文对象表示了当前表达式操作的对象。
具体工作流程如下图:
SpEL表达式工作流程
- 首先定义表达式:#{poet.getPoem()};
2. 定义解析器ExpressionParser实现,SpEL提供默认实现SpelExpressionParser分析解 析表达式,提供getValue简单方法用于获取表达式值;
3. 定义表达式上下文对象(可选),SpEL使用EvaluationContext接口表示上下文对象,用于设置根对象、自定义变量、自定义函数、类型转换器等,SpEL提供默认实现StandardEvaluationContext;
4. 使用表达式对象,根据上下文对象(可选)求值(调用表达式对象的getValue方法)获得结果。