1、Spring表達式語言(簡稱:SpEL):是一個支持運行時查詢和操作對象圖的強大的表達式語言。
2、語法類似於EL:SpEL使用#{...}作為定界符,所有在大括號內的字符都被認為是SpEL。
3、SpEL為bean的屬性進行動態賦值提供了便利。
4、通過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、屬性和方法(1)】
(1)引用其他對象
1 <!--通過value屬性和SpEL配置Bean之間的應用關系--> 2 <property name="prefix" value="#{prefixGenerator}"></property>
(2)引用其他對象的屬性
1 <!--通過value屬性和SpEL配置suffix屬性值為另一個Bean的suffix屬性值--> 2 <property name="suffix" value="#{sequenceGenerator2.suffix}"/>
(3)調用其他方法,還可以鏈式操作
1 <!--通過value屬性和SpEL配置suffix屬性值為另一個Bean方法的返回值--> 2 <property name="suffix" value="#{sequenceGenerator2.toString()}"/>
1 <!--方法的連綴--> 2 <property name="suffix" value="#{sequenceGenerator2.toString()。toUpperCase()}"/>
(4)調用靜態方法或者靜態屬性:通過T()調用一個類的靜態方法,它將返回一個Class Object,然后再調用相應的方法或屬性
1 <property name="initValue" value="#{T(java.lang.Math).PI}"></property>
【SpELl支持的運算符號】
1、算數運算符:+,-,*,/,%,^。
2、加號還可以用作字符串連接。
3、比較運算符:<,>,==,<=,>=,It,gt,eg,le,ge
4、邏輯運算度:and,or,not
5、if-else運算符
6、正則表達式:matches