Spring学习记录(七)---表达式语言-SpEL

SpEL---Spring Expression Language:是一个支持运行时查询和操作对象图表达式语言、使用#{...}作为定界符,为bean属性动态赋值提供了便利。

对于普通的赋值,用SpEL也可以,但意义不大,如:

  整数:<property name="count" value="#{5}">
小数:<property name="frequency" value="#{89.5}">
字符串:<property name="name" value="#{"Evan"}"> //要用引号引起来
布尔值:<property name="enabled" value="#{false}">

 ②引用Bean、属性和方法

 <bean id="car" class="com.guigu.spring.autowire.Car"
p:brand="Audi" p:price="200000"></bean>
<!--引用其他对象-- ,相当于 ref="">
<bean id="person" class="com.guigu.spring.autowire.Person"
p:name="Tom" p:car="#{car}"></bean>
<!--引用其他对象的属性-->
<bean id="car2" class="com.guigu.spring.autowire.Car"
p:brand="Baoma" p:price="#{car.price}"></bean>
<!--引用其他对象的方法,还可以链式操作-->
<bean id="car3" class="com.guigu.spring.autowire.Car" p:toString="#{car.toString()}">
<bean id="car3" class="com.guigu.spring.autowire.Car" p:toString="#{car.toString().toUpperCase()}">

支持运算符号

算数运算符:+ - * /

字符串连接符: p:name="#{fullname.first + " " + fullname.lastname}"

比较运算符: > < == >= ...

逻辑运算符:and、or、not

if-else运算符:<property name="answer" value="#{Main.answer()=='A'?A:B}">

正则表达式:matches

 ④调用静态方法或属性:用T()调用一个类的静态方法,它将返回一个Class Object,然后再调用相应的方法或属性

  <bean id="circle" class="com.guigu.spring.autowire.Circle" >
// 调用了PI属性
<property name="zhouchang" value="#{T(java.lang.Math).PI}"></property> </bean>

这样,xml的功能有多了,可以直接做一些调用和判断。

文章问学习记录,还没有深入学习。若有错误,望指正

上一篇:(译)关于async与await的FAQ


下一篇:disque概要