欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring spel表達式使用方法示例

 更新時間:2017年09月22日 15:05:29   作者:yangnianbing110  
這篇文章主要介紹了Spring spel表達式使用方法示例,通過一些實例向大家展示了spel表達式的用法,需要的朋友可以了解下。

spring in action第三版讀書筆記

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

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

2.調(diào)用方法以及引用對象中的屬性

3.計算表達式的值

4.正則表達式的匹配

5.集合的操作

spel最終的目標(biāo)是得到表達式計算之后的值,這些表達式可能是列舉的一些值,引用對象的某些屬性,或者是類中的某些常量,復(fù)雜的spel表達式通常都是由一些簡單的元素構(gòu)成的。最簡單的僅僅是得到一些給出元素的值,例如:

<property name="count" value="the value is #{5}"/>。這種情況貌似很傻,根本就不需要用到spel,但是復(fù)雜的表達式都是由簡單的構(gòu)成的

對其他bean的引用

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

<property name="instrument" value="#{saxophone}"/> 

等同于

<property name="instrument" ref="saxophone"/> 

引用另外一個id為saxophone的bean作為instrument的值
對其他bean中某個屬性的引用

<bean id="carl" class="com.springinaction.Instrumentalist"> 
<property name="song" value="#{kenny.song}"/> 
</bean> 

取id為kenny的bean的song字段的作為song的value
對其他bean中某個方法的引用

<property name="song" value="#{songSelector.selectSong().toUpperCase()}"/> 

調(diào)用id為songSelector的bean的selectSong()方法,使用其返回值作為song的值,這也帶來一個問如果selectSong()方法返回一個null,那么會拋出一個空指針異常

<property name="song" value="#{songSelector.selectSong()?.toUpperCase()}"/>,表達式(?.)可以確保在selectSong()返回不為空的情況下調(diào)用toUpperCase()方法,如果返回空那么不繼續(xù)調(diào)用后面的方法

對類進行引用

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

使用表達式T(),例如:

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

spel計算表達式的值

spel表達式支持各種各樣的運算符,我們可以可以運用這些運算符來計算表達式的值

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

使用spring的util namespace中的元素<util:list>定義一個集合

<util:list id="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對集合進行篩選

<property name="chosenCity" value="#{cities[2]}"/>,

[]操作符也可以對Map進行篩選,假設(shè)citis是一個Map類型<property name="chosenCity" value="#{cities["keyName"]}"/>
[]對Properties類型進行操作

<util:properties id="settings"
location="classpath:settings.properties"/>使用<util:properties>標(biāo)簽讀取一個properties文件

<property name="accessToken" value="#{settings['twitter.accessToken']}"/>
基于某個屬性對集合中的元素進行過濾
<property name="bigCitis" value="#{cities.?[population gt 10000]}"/>選中人口大一10000的cities中的元素作為bigCitis的值,同操作符(.?[])類似, 操作符(.^[]選取滿足要求的第一個元素, .$[]選取滿足要求的最后一個)
選中已有集合中元素的某一個或幾個屬性作為新的集合
<property name="cityNames" value="#{cities.![name + ", " + state]}"/>

總結(jié)

以上就是本文關(guān)于Spring spel表達式使用方法示例的全部內(nèi)容,希望對大家有所幫助。

相關(guān)文章

  • 優(yōu)雅地在Java 8中處理異常的方法詳解

    優(yōu)雅地在Java 8中處理異常的方法詳解

    異常處理是我們在日常開發(fā)中經(jīng)常會遇到的一種需求,下面這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅地在Java 8中處理異常的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們來一起看看吧
    2019-01-01
  • SpringBoot響應(yīng)出現(xiàn)中文亂碼的解決方法

    SpringBoot響應(yīng)出現(xiàn)中文亂碼的解決方法

    這篇文章主要介紹了SpringBoot響應(yīng)出現(xiàn)中文亂碼的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作有一定的參考價值,需要的朋友們下面隨著小編來一起來學(xué)習(xí)吧
    2024-02-02
  • dubbo新手學(xué)習(xí)之事件通知實踐教程

    dubbo新手學(xué)習(xí)之事件通知實踐教程

    這篇文章主要給大家介紹了關(guān)于dubbo新手學(xué)習(xí)之事件通知實踐的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • log4j使用詳細解析

    log4j使用詳細解析

    Log4j 除了可以記錄程序運行日志信息外還有一重要的功能就是用來顯示調(diào)試信息。下面通過本文給大家介紹log4j使用詳細解析,感興趣的朋友一起看看吧
    2017-10-10
  • Spring boot連接MySQL 8.0可能出現(xiàn)的問題

    Spring boot連接MySQL 8.0可能出現(xiàn)的問題

    這篇文章主要給大家介紹了關(guān)于Spring boot連接MySQL 8.0可能出現(xiàn)的問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • 深入了解Java核心類庫--BigDecimal和System類

    深入了解Java核心類庫--BigDecimal和System類

    這篇文章主要為大家詳細介紹了javaBigDecimal和System類定義與使用的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07
  • Java實現(xiàn)遞歸計算n的階乘

    Java實現(xiàn)遞歸計算n的階乘

    這篇文章主要為大家詳細介紹了Java實現(xiàn)遞歸計算n的階乘,利用遞歸的思想實現(xiàn)階乘的計算,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • javaweb頁面附件、圖片下載及打開(實現(xiàn)方法)

    javaweb頁面附件、圖片下載及打開(實現(xiàn)方法)

    下面小編就為大家?guī)硪黄猨avaweb頁面附件、圖片下載及打開(實現(xiàn)方法)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Spring boot 跳轉(zhuǎn)到j(luò)sp頁面的實現(xiàn)方法

    Spring boot 跳轉(zhuǎn)到j(luò)sp頁面的實現(xiàn)方法

    本篇文章主要介紹了Spring boot 跳轉(zhuǎn)到j(luò)sp頁面的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • SpringBoot 如何讀取classpath下的文件

    SpringBoot 如何讀取classpath下的文件

    這篇文章主要介紹了SpringBoot 讀取classpath下的文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論