SPRing表達式語言---SpEL是一個支持運行時查詢和操作對象的強大的表達式語言語法類似于EL:SpEL使用#{...}作為定界符,所有在大括號中的字符都將被認為是SpELSpEL為bean的屬性進行動態賦值提供了便利通過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、屬性和方法引用其他對象<!-- 通過value屬性和SpEL配置Bean之間的應用關系 --><property name="prefix" value="#{prefixGenerator}"/>引用其他對象的屬性<!-- 通過value屬性和SpEL配置suffix屬性值為另一個bean的suffix屬性值 --><property name="suffix" value="#{sequenceGenerator2.suffix}"/>調用其他方法,還可以鏈式操作<!-- 通過value屬性和SpEL配置suffix屬性值為另一個bean的方法的返回值 --><property name="suffix" value="#{sequenceGenerator2.toString()}"/><!-- 方法的鏈接 --><property name="suffix" value="#{sequenceGenerator2.toString().toUpperCase()}"/>SpEL:支持的運算符算術運算符:+、-、*、/、%、^加號還可以用作字符串連接比較運算符:<、 >、 ==、 <=、 >=、 It、 gt、 eq、 le、 ge邏輯運算符:and、or、not、|if-else運算符、三元表達式正則表達式:matches調用靜態方法或靜態屬性:通過T()調用一個類的靜態方法,它將返回一個Class Object,然后再調用相應的方法或屬性:<property name="initValue" value="#{T(java.lang.Math).PI}"/>
示例代碼:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <bean id="address" class="com.yl.spel.Address"> 7 <!-- 使用SpEL為屬性賦一個字面值 --> 8 <property name="city" value="#{'beijing'}"></property> 9 <property name="street" value="#{'wudaokou'}"></property>10 </bean>11 12 <bean id="car" class="com.yl.spel.Car">13 <property name="brand" value="Audi"></property>14 <property name="price" value="500000"></property>15 <!-- 使用SpEL引用類的靜態屬性 -->16 <property name="tyrePerimeter" value="#{T(java.lang.Math).PI * 80}"></property>17 </bean>18 19 <bean id="person" class="com.yl.spel.Person">20 <property name="name" value="Tom"></property>21 <!-- 使用SpEL來引用其他的bean -->22 <property name="car" value="#{car}"></property>23 <!-- 使用SpEL來引用其他的bean的屬性 -->24 <property name="city" value="#{address.city}"></property>25 <!-- 使用SpEL中使用運算符 -->26 <property name="info" value="#{car.price > 300000 ? '金領':'白領'}"></property>27 </bean>28 </beans>
新聞熱點
疑難解答