1.简介
有别于传统的Spring静态配置,Spring Expression Language的值是在运行时,也就是Spring容器加载时计算出来的。
主要的功能包含:
1)ID引用Bean,执行对象的方法/获取对象的属性
2)数学、关系、逻辑运算
3)正则表达式匹配
4)操作集合
2.使用及举例
SpEL以"#{...}"进行标识。
1)ID引用Bean,执行对象的方法/获取对象的属性
--常量
整型 value="#{5}"
浮点型 value="#{5.1}"
科学计数法 value="#{1E4}"
字符型 value="hello, #{'java world'} !"
布尔型 value="#{true}"
--ID引用
value="#{beanID}" <==> ref="beanID"
--获取对象的属性
value="#{beanID.property}"
--执行对象的方法
value="#{beanID.getProperty()}"
--获取对象属性/执行对象方法时支持多个连续使用,也支持混合使用
value="#{beanID.property.toUpperCase()}"
value="#{beanID.getProperty().toUppserCase()}"
--空指针处理:在连接符"."之前加上"?",这样就会进行判断,如果是null则计算中止,直接返回null。
value="#{beanID.property?.toUpperCase()}"
value="#{beanID.getProperty()?.toUppserCase()}"
--static属性和方法
使用T(fullClassName)来获取static属性/方法对应的类对象
value="#{T(java.lang.Math).PI}"
value="#{T(java.lang.Math).random()}"
2)数学、关系、逻辑运算
--数学运算:+,-,*,/,%,^
value="#{person.age * 10}"
测试时发现此时可能出现错误,如果person.age = 24.56,计算出的结果却为240.0
同样也支持字符串+
value="#{'Hello, ' + person.name}"
--关系运算:<,>,==,<=,>=,lt,gt,eq,le,ge
value="#{person.age == 10}"
--逻辑运算:and, or, not, !
value="#{person.age eq 10 and not person.male}"
--三元判断: ?:(...),?:(...)
value="#{person.age ge 18 ? 'adult':'minor'}"
3)正则表达式匹配:matches
value="#{person.name matches 'huang.*'}"
4)操作集合
--获取集合中的某一元素
value="#{list[index]}"
value="#{map[key]}"
注:SpEL内置了两个特殊的Properties对象SystemEnvironment和SystemProperties
SystemEnvironment为OS环境变量
SystemProperties为JVM启动参数(JVM启动时通过-Dxxx传入)
[index]还可以用来获取String中的字符
--获取集合中的多个元素:过滤
.?:所有符合条件的元素
value="#{persons.?[age ge 18]}"
.^:第一个符合条件的元素
value="#{persons.^[age ge 18]}"
.$:最后一个符合条件的元素
value="#{persons.$[age ge 18]}"
--根据集合构建新集合
.!
新集合元素可以为原集合元素的属性,也可以为原集合某些元素的运算结果
value="#{persons.![name]}"
value="#{persons.![firstName + '.' + lastName]}"
3.使用须知
尽量少使用SpEL,除非真正需要
4.参考资料
相关推荐
3. **Spring Expression Language (SpEL) 支持**:可以在Spring的表达式语言中直接使用加密值,简化了加密数据的使用。 4. **易于集成**:与其他Spring Boot组件无缝集成,如Spring Security,使得加密操作与整个...
标题中的"spring-expression-3.2.1.RELEASE.zip"是一个Spring框架的组件,Spring Expression Language (SpEL) 的特定版本。SpEL是Spring框架的一部分,它提供了一种强大的表达式语言,用于在运行时查询和操作对象图...
此外,这个包可能还包括其他相关组件,如Spring Expression Language (SpEL) 和Spring Test,用于测试和配置Spring应用。 2. spring-5.3.6-docs.zip:这个文件提供了Spring Framework 5.3.6.RELEASE的官方文档。...
2. **核心容器**:Spring 的核心组件包括 Beans、Core、Context 和 Expression Language。Beans 模块提供了一种声明式管理对象的方式,Core 模块包含 Spring 框架的基础类,Context 模块提供了与应用上下文相关的...
3. **Spring Core**: `spring-core-4.1.3.BUILD-SNAPSHOT.jar` 是Spring框架的核心组件,包含了Spring的核心功能,如依赖注入(DI)、资源管理、类型转换系统和SpEL(Spring Expression Language)。这些组件是...
5. **工具和支持**:这部分包括Spring Expression Language (SpEL) 和Spring Test模块。SpEL是Spring的表达式语言,用于在运行时查询和操作对象图。Spring Test模块提供了对单元测试和集成测试的支持。 6. **4.3.16...
1. **Spring Core Container**:这是Spring框架的基础,包括Core、 Beans、Context和SpEL(Spring Expression Language)模块。Core模块提供了基本的IoC(Inversion of Control)容器,管理对象的生命周期和依赖关系...
9. **SpEL(Spring Expression Language)**:Spring 3引入了强大的表达式语言,用于在运行时查询和操作对象模型。例如,`(com.example.util.MyUtil).myMethod()}"/>`。 了解和掌握Spring 3的DTD配置对于理解Spring...
3. Expression Language增强:SPeL(Spring Expression Language)在这一版本中得到增强,提供了更强大的表达式评估能力,可用于属性注入、AOP等方面。 4. 集成改进:Spring3.1.1对其他流行的技术,如Hibernate、...
《Spring Expression Language (SpEL) 详解:深入理解与应用》 在Java世界里,Spring框架以其强大的功能和灵活性著称。Spring Expression Language(简称SpEL)是Spring框架中的一个核心组件,它提供了一种强大的...
-- Spring Expression Language --> <groupId>org.springframework <artifactId>spring-expression <version>4.3.26.RELEASE <!-- Spring ORM --> <groupId>org.springframework <artifactId>spring-orm...
- **spring-framework-4.3.25.RELEASE-dist.zip**:包含Spring Framework的基础库和核心模块,如core-container、beans、context、expression-language等,这些模块是Spring框架的基础,提供了DI、AOP、事件处理等...
9. **Spring Expression Language (SpEL)**:Spring表达式语言是一个强大且灵活的表达式语言,用于在运行时查询和操作对象图。 10. **WebSocket支持**:Spring 3.0开始支持WebSocket协议,为实时通信提供了基础。 ...
4. **表达式语言**:Spring Security 提供了一个强大的基于SpEL(Spring Expression Language)的安全表达式语言,用于在访问决策中进行复杂的逻辑判断,例如 `hasRole('ROLE_ADMIN')` 或 `isAnonymous()`。...
特别地,Spring Expression Language(SpEL)的引入增强了框架的表达式语言能力。同时,IoC容器得到了更新,包括Java基于bean元数据的定义、在组件内定义bean元数据的新方式,以及通用类型转换系统和字段格式化系统...
5. **Spring Expression Language (SpEL)**:Spring 提供了一种强大的表达式语言,用于在运行时查询和操作对象图。SpEL 在配置文件中常用于条件判断和方法调用。 6. **Spring Test**:4.0.5 版本中的 Spring Test ...
12. **Spring Expression Language (SpEL)**:SpEL是Spring的表达式语言,用于在运行时查询和操作对象图。 13. **事件驱动架构**:Spring支持事件驱动编程模型,允许组件之间通过发布和监听事件进行通信。 14. **...
Spring 3.0中,新的表达式语言名叫Spring Expression Language(SpEL,直译就是Spring表达式语言)。Shaun将其描述为“嵌入在Spring编程模型上的,可以用来在Spring项目之间描述任务以及配置的微型脚本语言。SpEL...