【Spring学习13】表达式语言(Spring EL)
2017-03-31 19:33
260 查看
Spring表达式语言(Spring Expression Language 简写SpEL)是类似于OGNL和JSF EL的表达式语言, 能够在运行时构建复杂表达式, 存取对象属性、调用方法等。所有的SpEL都支持XML和Annotation两种方式, 使用的格式为:#{SpEL expression}。
用在xml上的例子:
通常情况,在字段要引用外部的bean时,我们都使用ref属性指明外部bean的id:
但是我们如果使用el表达式的话,这里同样可以用value属性。
用在注解上:
在java程序中,我们可以使用ExpressionParser类来解析SpEL字符串:
看一些常用的el用法(下面都以注解方式举例,只要关心表达式字符串的内容就行):
2.逻辑操作符,包括:and,or,and not(!)
3.数学操作符,包括:加 (+),减 (-),乘 (*),除 (/),取模 (%),幂指数 (^)。
注意这里,因为表达式中出现了xml敏感的符号,比如”<”,”>”,”/”等,当生成XML时,会破坏了XML结构,使数据中断。所以如果在 xml写表达式的话,要注意用转义字符或使用
用在xml上的例子:
通常情况,在字段要引用外部的bean时,我们都使用ref属性指明外部bean的id:
<bean id="cellphonesender" class="twm.spring.start.NotifyServiceByCellPhoneImpl" /> <bean id="order" class="twm.spring.start.Order"> <property name="notifyservice" ref="cellphonesender"></property> </bean>
但是我们如果使用el表达式的话,这里同样可以用value属性。
<bean id="order" class="twm.spring.start.Order"> <property name="notifyservice" value="#{cellphonesender}"></property> </bean>
用在注解上:
public class Test { @Value("#{'Messi'.toUpperCase()}") private String name; }
在java程序中,我们可以使用ExpressionParser类来解析SpEL字符串:
// 1. 构建解析器 ExpressionParser parser = new SpelExpressionParser(); // 2. 解析表达式 Expression exp = parser.parseExpression("'Messi'.toUpperCase()"); // 3. 获取结果 exp.getValue();
看一些常用的el用法(下面都以注解方式举例,只要关心表达式字符串的内容就行):
一、引用bean:
@Value("#{customer}")
二、属性和方法调用
@Value("#{customer.name}")
@Value("#{'Messi'.toUpperCase()}");
@Value("#{userBean.getUserLocation()}");
三、SpEL 操作符
1.关系操作符,包括:等于 (==, eq),不等于 (!=, ne),小于 (<, lt),,小于等于(<= , le),大于(>, gt),大于等于 (>=, ge)2.逻辑操作符,包括:and,or,and not(!)
3.数学操作符,包括:加 (+),减 (-),乘 (*),除 (/),取模 (%),幂指数 (^)。
@Value("#{1>=1 and 6>(10/2)}") private boolean testbool;//true
注意这里,因为表达式中出现了xml敏感的符号,比如”<”,”>”,”/”等,当生成XML时,会破坏了XML结构,使数据中断。所以如果在 xml写表达式的话,要注意用转义字符或使用
<![CDATA[ ]]>
<bean id="order" class="twm.spring.start.Order"> <property name="testbool" value="#{1 ≥ 1 and 6 > (10/2)}"></property> </bean>
四、集合取值
@Value("#{testBean.map['MapA']}") private String mapA;
@Value("#{testBean.list[0]}") private String list;
相关文章推荐
- Spring3系列6 - Spring 表达式语言(Spring EL)
- 【跟我学spring 4.0 】之第八节-Spring 表达式语言(Spring EL)
- Spring学习----------Spring表达式语言介绍
- Spring3表达式语言(SpEL)学习笔记
- Spring入门学习——使用Spring表达式语言
- Spring学习记录(四)Spring表达式语言:SpEL
- Spring 表达式语言(Spring EL)书目录
- Spring3表达式语言(SpEL)学习笔记
- Spring学习记录(七)---表达式语言-SpEL
- Spring3表达式语言(SpEL)学习笔记
- 【Spring学习笔记】之【5.2 Spring表达式语言之SpEL基础】
- Spring3表达式语言(SpEL)学习笔记
- Spring3系列6-Spring 表达式语言(Spring EL)
- Spring学习(二十三)Spring表达式语言介绍
- 13-spring学习-class类型表达式
- Spring 表达式语言(Spring EL)
- 11-spring学习-表达式语言
- Spring学习笔记--Spring表达式语言SpEL
- Spring3系列6-Spring 表达式语言(Spring EL)
- Spring3表达式语言(SpEL)学习笔记