Java

Java Spring-SPEL

2020-01-10  本文已影响0人  一亩三分甜

Spring表达式语言(SPEL):是一个支持运行时查询和操作对象图的强大的表达式语言。SPEL为bean的属性进行动态赋值提供了便利。

通过SPEL可以实现:

通过bean的id对bean进行引用

调用方法以及引用对象中的属性

计算表达式的值

正则表达式的匹配

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

<property name="initValue" value="#{T(java.lang.Math).PI}"></property>

引用例子

    <bean id="address" class="com.cloud.spring.beans.spel.Address">
        <!-- 使用spel为属性赋一个字面值 -->
        <property name="city" value="#{'BeiJing'}"></property>
        <property name="street" value="WuDaoKou"></property>
    </bean>
    <bean id="car" class="com.cloud.spring.beans.spel.Car">
        <property name="brand" value="Audi"></property>
        <property name="price" value="500000"></property>
        <!-- 使用SpEL 引用类的静态属性 -->
        <property name="tyrePerimeter" value="#{T(java.lang.Math).PI * 80}"></property>
    </bean>
    <bean id="person" class="com.cloud.spring.beans.spel.Person">
        <!-- 使用SpEL 引用其他的Bean -->
        <property name="car" value="#{car}"></property>
        <!-- 使用SpEL 来引用其他的Bean 的属性-->
        <property name="city" value="#{address.city}"></property>
        <!-- 在SpEL中使用运算符 -->
        <property name="info" value="#{car.price > 300000 ? '金领':'白领'}"></property>
        <property name="name" value="Tom"></property>
    </bean>
//输出
Address{city='BeiJing', street='WuDaoKou'}
Car{brand='Audi', price=500000.0, tyrePerimeter=251.32741228718345}
Person{name='Tom', car=Car{brand='Audi', price=500000.0, tyrePerimeter=251.32741228718345}, city='BeiJing', info='金领'}
上一篇 下一篇

猜你喜欢

热点阅读