`

Spring3 - Spring Expression Language

阅读更多

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.参考资料

转自:http://orange5458.iteye.com/blog/1549551

分享到:
评论

相关推荐

    jasypt-spring-boot-starter 3.0.5依赖的pom及jar

    3. **Spring Expression Language (SpEL) 支持**:可以在Spring的表达式语言中直接使用加密值,简化了加密数据的使用。 4. **易于集成**:与其他Spring Boot组件无缝集成,如Spring Security,使得加密操作与整个...

    spring-expression-3.2.1.RELEASE.zip

    标题中的"spring-expression-3.2.1.RELEASE.zip"是一个Spring框架的组件,Spring Expression Language (SpEL) 的特定版本。SpEL是Spring框架的一部分,它提供了一种强大的表达式语言,用于在运行时查询和操作对象图...

    官方原版完整包 spring-framework-5.3.6.RELEASE-dist.zip

    此外,这个包可能还包括其他相关组件,如Spring Expression Language (SpEL) 和Spring Test,用于测试和配置Spring应用。 2. spring-5.3.6-docs.zip:这个文件提供了Spring Framework 5.3.6.RELEASE的官方文档。...

    spring4源码所需要的spring-objenesis-repack-2.1.jar,spring-cglib-repack-3.1.jar

    3. **Spring Core**: `spring-core-4.1.3.BUILD-SNAPSHOT.jar` 是Spring框架的核心组件,包含了Spring的核心功能,如依赖注入(DI)、资源管理、类型转换系统和SpEL(Spring Expression Language)。这些组件是...

    spring-framework-4.3.6.RELEASE-dist.zip

    1. **Spring Core Container**:这是Spring框架的基础,包括Core、 Beans、Context和SpEL(Spring Expression Language)模块。Core模块提供了基本的IoC(Inversion of Control)容器,管理对象的生命周期和依赖关系...

    最新版完整包 spring-5.3.9.RELEASE-dist.zip

    2. **核心容器**:Spring 的核心组件包括 Beans、Core、Context 和 Expression Language。Beans 模块提供了一种声明式管理对象的方式,Core 模块包含 Spring 框架的基础类,Context 模块提供了与应用上下文相关的...

    spring3-dtd

    9. **SpEL(Spring Expression Language)**:Spring 3引入了强大的表达式语言,用于在运行时查询和操作对象模型。例如,`(com.example.util.MyUtil).myMethod()}"/&gt;`。 了解和掌握Spring 3的DTD配置对于理解Spring...

    spring3-源码-文档-资源

    3. Expression Language增强:SPeL(Spring Expression Language)在这一版本中得到增强,提供了更强大的表达式评估能力,可用于属性注入、AOP等方面。 4. 集成改进:Spring3.1.1对其他流行的技术,如Hibernate、...

    spring-expression-3.2.3.release.jar.zip

    《Spring Expression Language (SpEL) 详解:深入理解与应用》 在Java世界里,Spring框架以其强大的功能和灵活性著称。Spring Expression Language(简称SpEL)是Spring框架中的一个核心组件,它提供了一种强大的...

    spring4-hibernate4-struts2整合

    -- Spring Expression Language --&gt; &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-expression &lt;version&gt;4.3.26.RELEASE &lt;!-- Spring ORM --&gt; &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-orm...

    Spring javadoc-api.rar

    9. **Spring Expression Language (SpEL)**:Spring表达式语言是一个强大且灵活的表达式语言,用于在运行时查询和操作对象图。 10. **WebSocket支持**:Spring 3.0开始支持WebSocket协议,为实时通信提供了基础。 ...

    Spring security-包含官方文档

    4. **表达式语言**:Spring Security 提供了一个强大的基于SpEL(Spring Expression Language)的安全表达式语言,用于在访问决策中进行复杂的逻辑判断,例如 `hasRole('ROLE_ADMIN')` 或 `isAnonymous()`。...

    官方原版源码spring-framework-4.3.25.RELEASE.zip

    - **spring-framework-4.3.25.RELEASE-dist.zip**:包含Spring Framework的基础库和核心模块,如core-container、beans、context、expression-language等,这些模块是Spring框架的基础,提供了DI、AOP、事件处理等...

    Spring 3.0-API 参考手册

    Spring 3.0中,新的表达式语言名叫Spring Expression Language(SpEL,直译就是Spring表达式语言)。Shaun将其描述为“嵌入在Spring编程模型上的,可以用来在Spring项目之间描述任务以及配置的微型脚本语言。SpEL...

    springspring-framework-3.0.0.M2

    7. **Spring Expression Language (SpEL)**:Spring 3.0 引入的 SpEL 是一种强大的表达式语言,允许在运行时查询和操作对象图。在 `src.rar` 中的配置文件中可以看到 SpEL 的使用,如条件判断、方法调用等。 8. ** ...

    Spring2.5-中文参考手册(这是个chm格式的文档)

    7. **Spring表达式语言(Spring Expression Language, SpEL)**:SpEL是Spring提供的强大表达式语言,用于在运行时查询和操作对象图。它在处理Bean属性、方法调用、条件判断等方面非常有用。 8. **国际化(I18N)支持**...

    官方原版源码spring-framework-5.1.8.RELEASE.zip

    10. **Spring Expression Language (SpEL)**:Spring表达式语言是Spring框架内的一种强大表达式语言,用于运行时查询和操作对象图。 通过深入研究这些关键知识点,开发者不仅能了解Spring Framework的内部工作原理...

Global site tag (gtag.js) - Google Analytics