SpEL运算符

SpEL提供了几种运算符,这些运算符可以用在SpEL表达式中的值上。

运算符类型运算符
算术运算+、-、*、/、%、^
关系运算<、>、==、<=、>=、lt、gt、eq、le、ge
逻辑运算and、or、not、|
条件运算?:(ternary)、?:(Elvis)
正则表达式matches

数值运算

<!-- +运算符:两个数字相加 -->
<property name="adjustedAmount" value="#{counter.total + 42}"/>
<!-- +运算符:用于连接字符串 -->
<property name="fullName" value="#{performer.firstName + ' ' + performer.lastName}"/>
<!-- -运算符:两个数字相减 -->
<property name="adjustedAmount" value="#{counter.total - 20}"/>
<!-- *运算符:乘法运算 -->
<property name="circumference" value="#{2 * T(java.lang.Math).PI * circle.radius}"/>
<!-- /运算符:除法运算 -->
<property name="average" value="#{counter.total / counter.count}"/>
<!-- %运算符:求余运算 -->
<property name="remainder" value="#{counter.total % counter.count}"/>
<!-- ^运算符:乘方运算 -->
<property name="area" value="#{T(java.lang.Math).PI * circle.radius ^ 2}"/>

注意:+运算符可以执行字符串连接。

比较值

比较两个值是否相等,可以使用”==”运算符:

<!-- 假设equal属性为布尔属性 -->
<property name="equal" value="#{counter.total == 100}"/>

类似的,其他的关系运算符可以用于比较不同的值。
特别注意:由于小于等于和大于等于这两个符号在XML中有特殊意义,所以在Spring的XML配置文件中使用这两个符号时,会报错。当在XML中使用SpEL时,最好对这些运算符使用SpEL的文本替代方法。

运算符符号文本类型
等于==eq
小于<lt
小于等于<=le
大于>gt
大于等于
=
ge

逻辑表达式

<!-- and 运算符 -->
<property name="largeCircle" value="#{shape.kind == 'circle' and shape.perimeter gt 10000}"/>
<!-- ! 运算符 -->
<property name="outOfStock" value="#{!product.availiable}"/>
<!-- not 运算符 -->
<property name="outOfStock" value="#{not product.availiable}"/>
运算符操作
and逻辑AND运算操作,只有运算符两边都是true,表达式才能是true
or逻辑OR运算操作,只要运算符的任意一边是true,表达式就会是true
not或!逻辑NOT运算操作,对运算结果求反

条件表达式

<!-- ?:三元运算符 -->
<property name="song" value="#{kenny.song != null ? kenny.song : 'Greensleeves'}"/>

如果kenny.song值为空,则赋值kenny.song ,否则赋值’Greensleeves’。这里’Greensleeves’的引用重复两次,可简化表达式如下:

<!-- ?:三元运算符 -->
<property name="song" value="#{kenny.song != null ? 'Greensleeves'}"/>

当以这种方式使用时,“?:”通常被称为elvis运算符,而第一种方式则称为ternary运算符。

SpEL的正则表达式

SpEL通过matches运算符来支持表达式中的模式匹配。

<!-- 判断一个字符串是否是有效的邮件地址 -->
<property name="validEmail" value="#{admin.email matches '[a-zA-Z0-9.-%+-]+@[a-zA-Z0-9.-]+\\.com'}"/>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring SpELSpring Expression Language)是Spring框架中的一个功能强大的表达式语言,它支持在运行时查询和操作对象图。SpEL提供了一种强大的表达式语言,可以在运行时查询和操作对象图。它可以用于查询和操作对象图中的属性,方法调用,访问数组和集合等。SpEL还支持算术,逻辑和关系运算符,可以使用它们来计算表达式的值。以下是SpEL的一些示例: 1. 访问对象属性 ```java public class Person { private String name; private int age; // getter and setter methods } Person person = new Person(); person.setName("John"); person.setAge(30); ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("name"); String name = (String) exp.getValue(person); // 输出:John exp = parser.parseExpression("age"); int age = (Integer) exp.getValue(person); // 输出:30 ``` 2. 调用对象方法 ```java public class MyStringUtils { public static String reverseString(String str) { return new StringBuilder(str).reverse().toString(); } } ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("T(com.example.MyStringUtils).reverseString('hello')"); String reversedStr = (String) exp.getValue(); // 输出:olleh ``` 3. 访问数组和集合 ```java int[] arr = new int[] {1, 2, 3, 4, 5}; List<String> list = Arrays.asList("apple", "banana", "orange"); ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("arr[2]"); int num = (Integer) exp.getValue(arr); // 输出:3 exp = parser.parseExpression("list[1]"); String fruit = (String) exp.getValue(list); // 输出:banana ``` 4. 算术,逻辑和关系运算符 ```java ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("10 * 5 + 2"); int result = (Integer) exp.getValue(); // 输出:52 exp = parser.parseExpression("true and false"); boolean boolResult = (Boolean) exp.getValue(); // 输出:false exp = parser.parseExpression("10 > 5"); boolResult = (Boolean) exp.getValue(); // 输出:true ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值