spring_(9)Spring表示式語言 SpEL
阿新 • • 發佈:2018-11-19
SpEL
- Spring表示式語言(簡稱SpEL) : 是一個支援執行時查詢和操作物件圖的強大的表示式語言。
- 語法類似於EL : SpEL使用 #{…}作為定界符,所有在大框號中的字元都將被認為是SpEL
- SpEL為bean的屬性進行動態賦值提供了便利
- 通過SpEL可以實現:
- 通過bean的id對bean進行引用
- 呼叫方法以及引用物件中的屬性
- 計算表示式的值
- 正則表示式的匹配
SpEL:字面量
<!--通過 value 屬性和 SpEL 配置Bean之間的應用關係-->
<property name="prefix" value="#{prefixGenerator}"></property>
- 引用其他物件的屬性
<!--通過 value 屬性和 SpEL 配置 suffix 屬性值為另一個 Bean 的suffix 屬性值-->
<property name="suffix" value="#{sequenceGenerator2.suffix}"></property>
- 呼叫其他方法,還可以鏈式操作
<!--通過 value 屬性和 SpEL 配置 suffix 屬性值為另一個 Bean 的方法的返回值-->
<property name="suffix" value="#{sequenceGenerator2.toString()}"></property>
<!--方法的連綴-->
< property name="suffix" value="#{sequenceGenerator2.toString().toUpperCase}"></property>
- 算術運算子號:+ - * / % ^
<property name="adjustedAmount" value="#{counter.totla} + 42"></property>
- 加號還可以用作字串連線
<constractor-arg value="#{ performer.firstName+ ' '+ performer.lastName } "/>
- 比較運算子:<,>,==,<=,>=,lt,gt,eg,le,ge
<property name="equal" value="#{counter.totla == 100}"></property>
<property name="hasCapacity" value="#{counter.totla le 100000}"></property>
-
邏輯運算子號: and or not l
-
三位運算子
-
正則表示式
<constructor-arg value="#{admin.email matches '[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}'}"/>
SpEL:引用Bean、屬性和方法(2)
- 呼叫靜態方法或靜態屬性:通過T() 呼叫一個類的靜態方法,它將返回一個Class Object,然後再呼叫相應的方法或屬性:
<property name="initValue" value="#{T(java.lang.Math).PI}"></property>