使用#{…}作为定界符,所有在大括号中的字符都将被认为是SpEL
动态赋值提供了便利
通过SpEL可以实现:
• 通过bean的id对bean进行引用
• 调用方法及引用对象中的属性
• 计算表达式的值
• 正则表达式的匹配
如果我们要为基本类型或者String类型赋值,我们也可以用SpEL:
整数:<property name="count" value="#{5}">
科学计数法:<property name="capacity" value="#{1e4}">
String可以使用单引号或者双引号作为字符创的定界符号:
<property name="name" value="#{"Tom"}">或者我们也可以这么写:
<property name="name" value="#{'Tom'}">
布尔类型"<property name="enabled" value="#{false}" >
我们这里只是说可以用,瞅着都知道这个很麻烦(ಥ_ಥ)还不如直接赋值,大家知道有这回事就行。
当然我们也可以拿这玩意引用其他对象:
<property name="myCar" value="#{car}">这里相当于用了ref属性
也可以用来引用其他对象的属性,这种操作我们是无法通过普通操作完成的:
<property name="myCity" value="#{address.city}">
SpEL还可以调用其他方法,还可以链式操作,真的可以骚上天:
<property name="myCity" value="#{address.toString()}">
<property name="myCity" value="#{address.roString().toUpperCase()}">
其他还有很多丰富的其他功能:
• 算数运算符:+、-、*、/、%、^
• 加号还可以用作字符创链接
• 比较运算符<、>、==、<=、>=、lt、gt、eq、le、ge
• 逻辑运算符and、or、not、|
• if-else运算符
• 正则表达式matches
• 调用静态方法或者静态属性T()
可以看出SpEL是块非常庞大的内容,我们需要花很久才能将它真正掌握,这里我就提一些比较常用的功能。
先做一下准备工作,先写一下新的JavaBean:
Car.java
1. private String brand;
2. private double price;
3. //轮胎周长
4. private double tyrePerimeter;
Person.java
1. private String name;
2. //引用address bean 的city属性
3. private String city;
4.
5.
6. private Car car;
7. //根据car的price 确定info
8. //car 的price>=3000000:经理
9. //否则为白领
10. private String info;
Address.java和之前的一样,接下来来写配置文件beans-spel.xml
SpEL赋字面量的值
1. <beanid="address"class="com.figsprite.bean.SpEL.Address">
2. <propertyname="city"value="#{'上海'}"/>
3. <propertyname="street"value="#{'陆家嘴'}"/>
4. </bean>
SpEL 算法运算符 调用静态属性
1. <beanid="car"class="com.figsprite.bean.SpEL.Car">
2. <propertyname="brand"value="奥迪"/>
3. <propertyname="price"value="5000000"/>
4. <propertyname="tyrePerimeter"value="#{T(java.lang.Math).PI * 80}"
5. </bean>
SpEL 引用其他对象 引用其他对象属性 if-else
1. <beanid="person"class="com.figsprite.bean.SpEL.Person">
2. <propertyname="car"value="#{car}"/>
3. <propertyname="city"value="#{address.city}"/>
4. <propertyname="info"value="#{car.price>3000000?'经理':'白领'}"/>
5. <propertyname="name"value="Tom"/>
6. </bean>
这里就存在动态赋值,如info属性,我需要根据car.price的具体值决定info的值
spring el表达式 取变量 spring表达式语言
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
cron表达式详细讲解
cron表达式简介
cron表达式 -
spring el表达式取对象属性 spring注解支持el表达式
Spring EL 和资源调用 文章目录1.概述2.添加支持4.新建包和相关文件4.完善各个类5.测试 1.概述Spring EL-Spring表达式语言,支持在xml和注解中使用表达式,类似于JSP的EL表达式语言。 Spring开发中经常涉及调用各种资源的情况,包含普通文件、网址、配置文件、系统环境变量等,我们可以使用Spring的表达式语言实现资源的注入。 Spring主要在注解@V
spring el表达式取对象属性 Spring EL 和资源调用 Spring 基础 Spring Boot spring