spring 表达式语言:SpEL

spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的图的强大的表达式语言。
语法类似于EL:SpEL使用# {}作为定界符,所有在大框号中的字符都将被认为是SpEL
SpEL为bean的属性进行动态赋值提供了便利
通过SpEL可以实现:
1、通过bean的id对bean进行引用
2、调用方法以及引用对象中的属性
3、计算表达式的值
4、正则表达式的匹配

SpEL字面量:意义不大,很少使用

整数:<property name="count" value="#{6}">
小数:<property name="frequency" value="#{82.5}">
字符串:<property name="name" value="#{"熊桐"}"> //要用引号括起来,单引号和双引号都行
科学计数法:<property name="capacity" value="#{1e5}">
布尔值:<property name="enabled" value="#{false}">

引用Bean、属性和方法

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

还支持运算符号

算数运算符:+ - * /
字符串连接符: p:name="#{fullname.first + " " + fullname.lastname}"
比较运算符: > < == >= …
逻辑运算符:and、or、not
if-else运算符: 类似于三目运算符
正则表达式:matches

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

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

猜你喜欢

转载自blog.csdn.net/qq_37774171/article/details/85275401