Spring 6中SpEL的保留字与预定义变量完整列表查询
Spring 6中SpEL保留字与预定义变量详解
一、预定义变量完整列表及解释
Spring集成的SpEL环境中,默认注册了以下预定义变量:
environment:对应Spring容器的Environment实例,可用于读取配置属性、环境变量、系统属性等,示例:environment.getProperty("server.port")systemProperties:直接映射JVM系统属性,等价于System.getProperties(),示例:systemProperties["java.home"]systemEnvironment:直接映射操作系统环境变量,等价于System.getenv(),示例:systemEnvironment["JAVA_HOME"]this:指代当前被评估的对象实例,在Bean内部使用时指向Bean自身root:表示EvaluationContext的根对象,多数场景下与this指向一致,嵌套表达式中可用来访问根级对象beanFactory:仅在Spring容器上下文内可用,指向容器的BeanFactory实例,可用于获取容器中的Bean,示例:beanFactory.getBean("userService")
二、SpEL保留字列表
SpEL的保留字是不能用作标识符(如变量名、Bean名)的关键字,完整列表如下:and, or, not, eq, ne, lt, le, gt, ge, true, false, null, instanceof, matches, between, like, in, new, ?, :
这些关键字用于表达式的逻辑判断、比较、类型检查等操作,使用时需避免作为自定义标识符。
三、Spring 6的相关更新
Spring 6对SpEL的优化集中在性能和Java版本兼容性上,未新增预定义变量或核心保留字:
- 适配Java 16+的record类型,支持更简洁的record属性访问
- 优化表达式编译逻辑,提升复杂表达式的执行效率
- 修复部分表达式解析的边缘场景bug,但核心语法和预定义变量集合与Spring 5.x保持一致
四、获取权威完整列表的方法
官方文档未单独整理完整列表,可通过以下方式获取准确内容:
- 查看Spring源码中
org.springframework.expression.spel.SpelLexer类,其中定义了所有保留字的Token - 预定义变量可查看
org.springframework.context.expression.StandardBeanExpressionResolver和org.springframework.expression.spel.support.StandardEvaluationContext的源码,它们负责注册默认的上下文变量
内容的提问来源于stack exchange,提问作者Manuel Jordan
相关产品推荐
相关产品推荐

