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的功能有多了,可以直接做一些调用和判断。
文章问学习记录,还没有深入学习。若有错误,望指正