SPEL解析过程
使用 ExpressionParser 基于 ParserContext 将字符串解析为 Expression,
Expression 再根据 EvaluationContext 计算表达式的值。
Bean 表达式解析器
- org.springframework.context.expression.StandardBeanExpressionResolver:标准 Bean 表达式解析器
表达式解析器
- org.springframework.expression.ExpressionParser:表达式解析器抽象
- org.springframework.expression.spel.standard.SpelExpressionParser:SPEL 表达式解析器
解析上下文
- org.springframework.expression.ParserContext:解析上下文
Bean 表达式上下文
- org.springframework.beans.factory.config.BeanExpressionContext
表达式
- org.springframework.expression.Expression:表达式抽象
- org.springframework.expression.spel.standard.SpelExpression:SPEL 表达式
表达式计算节点
- org.springframework.expression.spel.SpelNode
- org.springframework.expression.spel.ast.SpelNodeImpl:AST 计算节点公共抽象
- org.springframework.expression.spel.ast.CompoundExpression:级联属性计算节点
- org.springframework.expression.spel.ast.PropertyOrFieldReference:单个属性或字段计算节点
表达式的 token 分类
- org.springframework.expression.spel.standard.TokenKind
计算上下文
- org.springframework.expression.EvaluationContext:计算上下文
- org.springframework.expression.spel.support.StandardEvaluationContext:标准计算上下文
属性访问器
- org.springframework.expression.PropertyAccessor:属性访问器
- org.springframework.context.expression.BeanExpressionContextAccessor:用于读取 BeanExpressionContext【DefaultListableBeanFactory】中指定名称的 bean
- org.springframework.expression.spel.support.ReflectivePropertyAccessor:基于反射方式读写对象属性的访问器