Spring表达式语言:SpEL
1、Spring表达式语言(简称:SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言。
2、语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号内的字符都被认为是SpEL。
3、SpEL为bean的属性进行动态赋值提供了便利。
4、通过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、属性和方法(1)】
(1)引用其他对象
1 <!--通过value属性和SpEL配置Bean之间的应用关系--> 2 <property name="prefix" value="#{prefixGenerator}"></property>
(2)引用其他对象的属性
1 <!--通过value属性和SpEL配置suffix属性值为另一个Bean的suffix属性值--> 2 <property name="suffix" value="#{sequenceGenerator2.suffix}"/>
(3)调用其他方法,还可以链式操作
1 <!--通过value属性和SpEL配置suffix属性值为另一个Bean方法的返回值--> 2 <property name="suffix" value="#{sequenceGenerator2.toString()}"/>
1 <!--方法的连缀--> 2 <property name="suffix" value="#{sequenceGenerator2.toString()。toUpperCase()}"/>
(4)调用静态方法或者静态属性:通过T()调用一个类的静态方法,它将返回一个Class Object,然后再调用相应的方法或属性
1 <property name="initValue" value="#{T(java.lang.Math).PI}"></property>
【SpELl支持的运算符号】
1、算数运算符:+,-,*,/,%,^。
2、加号还可以用作字符串连接。
3、比较运算符:<,>,==,<=,>=,It,gt,eg,le,ge
4、逻辑运算度:and,or,not
5、if-else运算符
6、正则表达式:matches