背景
Spring动态表达式语言(简称SpEL)。是一种动态语言。
1.JVM动态语言
java是强类型的静态语言,所有代码在运行之前都必须进行严格的类型检查并编译成JVM字节码,这个特性就决定了
java在语言层面无法直接进行表达式语句的动态解析。而动态语言可以在程序运行时改变程序结构或变量类型。为了
简化java使用动态语言的难度,java6.0开始提供对JSR-223规范的全面支持。java6.0中内置集成了javascript解析引
擎,可以在java中调用javascript编写的动态脚本,并通过javascript解析执行的特性来编写相关动态业务逻辑。
2.SpEL表达式概述
SpEL可以独立使用。在基于Spring的框架中使用SpEL更加便捷,一般情况下无须手工调用SpEL提供的API。因为
Spring框架已经提供了许多直接使用SpEL表达式的方法,并且在框架层面屏蔽了表达式的运行设施创建过程,直接
使用即可。例如,在Bean配置定义中,可以直接通过“#{}”编写SpEL表达式。
示例如下:
3.SpEL核心接口
(1)ExpressionParser 接口用来解析表达式字符串;
(2)Expression接口用来计算表达式字符串的值。
在SpEL中常见的用途是针对特定实例对象的属性进行求值: