Sping表达式语言--SpEL

Spring表达式语言---SpEL
是一个支持运行时查询和操作对象的强大的表达式语言
语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都将被认为是SpEL
SpEL为bean的属性进行动态赋值提供了便利
通过SpEL可以实现:
通过bean的id对bean进行引用
调用方法以及引用对象中的属性
计算表达式的值
正则表达式的匹配

SpEL:字面量
字面量的表示:
-整数:<property name="count" value="#{5}"/>
-小数:<property name="frequency" value="#{89.7}"/>
-科学记数法:<property name="capacity" value="#{1e4}"/>
-String可以使用单引号或双引号作为字符串的定界符号:<property name="name" value="#{‘Tom‘}"/>或<property name="name" value="#{"Tom"}"/>
-Boolean:<property name="enabled" value="#{false}"/>

SpEL:引用Bean、属性和方法
引用其他对象
<!-- 通过value属性和SpEL配置Bean之间的应用关系 -->
<property name="prefix" value="#{prefixGenerator}"/>
引用其他对象的属性
<!-- 通过value属性和SpEL配置suffix属性值为另一个bean的suffix属性值 -->
<property name="suffix" value="#{sequenceGenerator2.suffix}"/>
调用其他方法,还可以链式操作
<!-- 通过value属性和SpEL配置suffix属性值为另一个bean的方法的返回值 -->
<property name="suffix" value="#{sequenceGenerator2.toString()}"/>
<!-- 方法的链接 -->
<property name="suffix" value="#{sequenceGenerator2.toString().toUpperCase()}"/>

SpEL:支持的运算符
算术运算符:+、-、*、/、%、^
加号还可以用作字符串连接
比较运算符:<、 >、 ==、 <=、 >=、 It、 gt、 eq、 le、 ge
逻辑运算符:and、or、not、|
if-else运算符、三元表达式
正则表达式:matches

调用静态方法或静态属性:通过T()调用一个类的静态方法,它将返回一个Class Object,然后再调用相应的方法或属性:
<property name="initValue" value="#{T(java.lang.Math).PI}"/>

示例代码:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 5
 6     <bean id="address" class="com.yl.spel.Address">
 7         <!-- 使用SpEL为属性赋一个字面值 -->
 8         <property name="city" value="#{‘beijing‘}"></property>
 9         <property name="street" value="#{‘wudaokou‘}"></property>
10     </bean>
11
12     <bean id="car" class="com.yl.spel.Car">
13         <property name="brand" value="Audi"></property>
14         <property name="price" value="500000"></property>
15         <!-- 使用SpEL引用类的静态属性 -->
16         <property name="tyrePerimeter" value="#{T(java.lang.Math).PI * 80}"></property>
17     </bean>
18
19     <bean id="person" class="com.yl.spel.Person">
20         <property name="name" value="Tom"></property>
21         <!-- 使用SpEL来引用其他的bean -->
22         <property name="car" value="#{car}"></property>
23         <!-- 使用SpEL来引用其他的bean的属性 -->
24         <property name="city" value="#{address.city}"></property>
25         <!-- 使用SpEL中使用运算符 -->
26         <property name="info" value="#{car.price > 300000 ? ‘金领‘:‘白领‘}"></property>
27     </bean>
28 </beans>
时间: 2024-12-29 06:49:46

Sping表达式语言--SpEL的相关文章

Spring表达式语言SpEL简介

Spring3引入了Spring表达式语言(Spring Expression Language,SpEL). SpEL有很多特性,比较常用的包括: 1.使用bean的id来引用bean, 下面这个例子就是将卧室这个bean通过SpEL注入到house这个bean的bedroom属性中. <bean id="bedroom" class="go.derek.Bedroom"/> <bean id="house" class=&q

Spring学习笔记--Spring表达式语言SpEL

Spring3引入了Spring表达式语言(Spring Expression Language,SpEL).SpEL是一种强大的.简洁的装配Bean的方式,它通过运行期执行的表达式将值装配到Bean的属性或构造器参数中.字面值我们可以在<property>元素的value属性中使用#{}界定符将值装配到Bean的属性中. <property name="count" value="#{5}" /> 浮点型数字一样可以出现在SpEL表达式中.

spring4-2-bean配置-6-Spring表达式语言SpEL

Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言. 语法类似于 EL:SpEL 使用 #{…} 作为定界符,所有在大框号中的字符都将被认为是 SpEL SpEL 为 bean 的属性进行动态赋值提供了便利 通过 SpEL 可以实现: 通过 bean 的 id 对 bean 进行引用 调用方法以及引用对象中的属性 计算表达式的值 正则表达式的匹配 字面量的表示 整数:<property name="count" value="#

Spring学习总结(四)——表达式语言 Spring Expression Language

SpEL简介与功能特性 Spring表达式语言(简称SpEL)是一个支持查询并在运行时操纵一个对象图的功能强大的表达式语言.SpEL语言的语法类似于统一EL,但提供了更多的功能,最主要的是显式方法调用和基本字符串模板函数. 同很多可用的Java 表达式语言相比,例如OGNL,MVEL和JBoss EL,SpEL的诞生是为了给Spring社区提供一个可以给Spring目录中所有产品提供单一良好支持的表达式语言.其语言特性由Spring目录中的项目需求驱动,包括基于eclipse的SpringSou

Spring表达式语言 之 5.1 概述 5.2 SpEL基础(拾叁)

5.1  概述 5.1.1  概述 Spring表达式语言全称为"Spring Expression Language",缩写为"SpEL",类似于Struts2x中使用的OGNL表达式语言,能在运行时构建复杂表达式.存取对象图属性.对象方法调用等等,并且能与Spring功能完美整合,如能用来配置Bean定义. 表达式语言给静态Java语言增加了动态功能. SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可以单独使用. 5.1.2  能干什么 表达式语言

spring表达式语言(SpEL)简述及Hello World示例

作为spring的基础模块之一,spring表达式语言模块(Spring Expression Language,简称SpEL)在运行时提供了查询和操作一个对象图的强大的表达式语言. Spring EL既可以通过XML被配置,也可以通过注解来进行配置.下面通过简单的例子来示范如何通过两种不同的方式配置SpEL从而注入String.整型和javabean数据. Spring EL依赖 项目通过maven进行管理,在maven的pom.xml配置文件中声明spring的核心依赖,maven将自动下载

开涛spring3(5.3) - Spring表达式语言 之 5.3 SpEL语法

5.3  SpEL语法 5.3.1  基本表达式 一.字面量表达式: SpEL支持的字面量包括:字符串.数字类型(int.long.float.double).布尔类型.null类型. 类型 示例 字符串 String str1 = parser.parseExpression("'Hello World!'").getValue(String.class); String str2 = parser.parseExpression("\"Hello World!\

开涛spring3(5.1&amp;5.2) - Spring表达式语言 之 5.1 概述 5.2 SpEL基础

5.1  概述 5.1.1  概述 Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”,类似于Struts2x中使用的OGNL表达式语言,能在运行时构建复杂表达式.存取对象图属性.对象方法调用 等等,并且能与Spring功能完美整合,如能用来配置Bean定义. 表达式语言给静态Java语言增加了动态功能. SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可以单独使用. 5.1.2  能干什么 表达式语言一般是用最简单的形式完成最主

Spring表达式语言:SpEL语法

Spring表达式语言简称:SpEL,SpEL既可以独立于Spring容器使用,,也可以在Spring配置文件中使用,这样就大大简化了Spring的Bean配置,给配置文件起到了"减肥"的作用,下面开始总结SpEL语法 1:直接量表达式 直接量表达式也是SpEL最简单的表达式,如下: public class SpelGrammar { public static void main(String[]args) { // 创建一个ExpressionParser对象,用于解析表达式 E