SpringEL表达式

一. SpringEL表达式的简介

Spring的表达式语言,简称SpELl,是一个支持运行时检查和操作对象图的强大的表达式语言,和我们之前学习过的JSP中的EL表达式类似,SPEL使用的是#{}作为定界符,所有在大括号中的字符都被认为的SPEL,SPEL为bean的属性进行动态赋值提供了非常大的便利,通过SPEL可以实现:

  • 通过bean的ID对bean进行引用,类似于 ref标签,比ref更强大
  • 可以调用方法以及引用对象的属性
  • 可以进行计算(数学运算、比较运算、逻辑运算、三目运算等)
  • 支持正则表达式

体验SpringEL:

<bean id="car" class="com.nhkj.spel.Car"><property name="brand" value="Audi"></property><property name="color" value="red"></property><property name="maxSpeed" value="200"></property><property name="price" value="300000"></property><!-- 通过SPEL表达式可以获得类中的常量 
					求周长					--><property name="perimeter" value="#{T(java.lang.Math).PI*60}"></property></bean><bean id="car2" class="com.nhkj.spel.Car"><property name="brand" value="Chery"></property><property name="color" value="red"></property><property name="maxSpeed" value="200"></property><property name="price" value="100000"></property><!-- 通过SPEL表达式可以获得类中的常量 --><property name="perimeter" value="#{T(java.lang.Math).PI*60}"></property></bean><bean id="person" class="com.nhkj.spel.Person"><property name="car" ref="car2"></property><property name="name" value="zwj"></property><!-- 使用了三目运算符和关系运算 --><property name="level" value="#{car2.price >= 300000?'金领':'白领'}"></property></bean>
二. SpringEL的使用
  • SPEL表达式可以使用字面量(意义不大),字面量仅限于字符串、基本数据类型

  • 引用bean、属性、方法

  • SPEL支持数学运算(加减乘除取模)

  • SPEL支持关系运算

    ​ < 、>、 <=、 >=、 ==、 != 所有的关系运算结果 是boolean类型

  • SPEL支持逻辑运算:xml中支持使用&& 表示并且,||表示或者,!表示非,但是不推荐使用,推荐使用效果相同的and,or,not

    ​ and(&&) 表示并且,连接多个boolean类型的运算符

    ​ or(||) 表示或者,连接多个boolean类型的运算符

    ​ not(!) 表示非,后面跟上一个boolean类型的运算符

  • SPEL支持三目运算符

  • SPLE支持正则表达式

<!-- 使用正则判断 --><property name="email" value="#{car3.getBrand() matches '\w{3,5}@\w{3,8}.(com|cn)'}"></property>
  • SPEL支持调用静态属性和静态方法
<property name="price" value="#{T(java.lang.Math).round(100000.53452345234)}"></property>
小结

SpringEL表达式操作类似于jsp中的EL表达式,使用#{}作为定界符,可以进行一些常用的操作。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值