spring中的spel表示式語言

2021-07-14 18:39:20 字數 3116 閱讀 4575

spring in action第三版讀書筆記

spring3.0引入了spring expression language(spel)語言,通過spel我們可以實現

1.通過bean的id對bean進行引用

2.呼叫方法以及引用物件中的屬性

3.計算表示式的值

4.正規表示式的匹配

5.集合的操作

spel最終的目標是得到表示式計算之後的值,這些表示式可能是列舉的一些值,引用物件的某些屬性,或者是類中的某些常量,複雜的spel表示式通常都是由一些簡單的元素構成的

最簡單的僅僅是得到一些給出元素的值例如:

。這種情況貌似很傻,根本就不需要用到spel,但是複雜的表示式都是由簡單的構成的

對其他bean的引用

通過spel我們也可以對context中其他的bean進行引用

[html]view plain

copy

<

property

name

="instrument"

value

="#"

/>

等同於[html]view plain

copy

<

property

name

="instrument"

ref=

"saxophone"

/>

引用另外乙個id為saxophone的bean作為instrument的值

對其他bean中某個屬性的引用

[html]view plain

copy

<

beanid=

"carl"

class

="com.springinaction.instrumentalist"

>

<

property

name

="song"

value

="#"

/>

bean

>

取id為kenny的bean的song欄位的作為song的value

對其他bean中某個方法的引用

[html]view plain

copy

<

property

name

="song"

value

="#"

/>

呼叫id為songselector的bean的selectsong()方法,使用其返回值作為song的值,這也帶來乙個問如果selectsong()方法返回乙個null,那麼會丟擲乙個空指標異常

,表示式(?.)可以確保在selectsong()返回不為空的情況下呼叫touppercase()方法,如果返回空那麼不繼續呼叫後面的方法

對類進行引用

如果某個類是外部類,而不是spring中定義的bean,那麼怎麼進行引用呢?

使用表示式t(),例如:

[html]view plain

copy

<

property

name

="randomnumber"

value

="#"

/>

spel計算表示式的值

spel表示式支援各種各樣的運算子,我們可以可以運用這些運算子來計算表示式的值

使用spel從集合中篩選元素:

使用spring的util namespace中的元素定義乙個集合

[html]view plain

copy

<

util:listid=

"cities"

>

<

bean

class

="com.habuma.spel.cities.city"

p:name

="chicago"

p:state

="il"

p:population

="2853114"

/>

<

bean

class

="com.habuma.spel.cities.city"

p:name

="atlanta"

p:state

="ga"

p:population

="537958"

/>

<

bean

class

="com.habuma.spel.cities.city"

p:name

="dallas"

p:state

="tx"

p:population

="1279910"

/>

<

bean

class

="com.habuma.spel.cities.city"

p:name

="houston"

p:state

="tx"

p:population

="2242193"

/>

util:list

>

使用spel對集合進行篩選

,操作符也可以對map進行篩選,假設citis是乙個map型別

對properties型別進行操作

location="classpath:settings.properties"/>使用標籤讀取乙個properties檔案

[html]view plain

copy

<

property

name

="accesstoken"

value

="#"

/>

基於某個屬性對集合中的元素進行過濾

選中人口大一10000的cities中的元素作為bigcitis的值,同操作符(.?)類似, 操作符(.^選取滿足要求的第乙個元素, .$選取滿足要求的最後乙個)

選中已有集合中元素的某乙個或幾個屬性作為新的集合

spring中的spel表示式語言

spring in action第三版讀書筆記 spring3.0引入了spring expression language spel 語言,通過spel我們可以實現 1.通過bean的id對bean進行引用 2.呼叫方法以及引用物件中的屬性 3.計算表示式的值 4.正規表示式的匹配 5.集合的操作...

Spring 表示式語言 SpEL

spel 字面量 spel支援的運算符號 constructor arg value property name equal value property property name hascap value property spel支援的運算符號 constructor arg value co...

Spring表示式語言SpEL

1 spel spring expression language 是乙個支援執行時查詢和操作物件圖的強大的表示式語言。2 類似於el spel使用 作為定界符,在所有在 中的字元都認為是spel。1 字面值 可用字串表示的值。2 spring配置bean的屬性時,可以使用spel表示字面值 1 引...