You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:50:45