Spring基礎—— SpEL

来源:http://www.cnblogs.com/solverpeng/archive/2016/07/18/5682551.html
-Advertisement-
Play Games

一、SpEL:Spring 表達式語言,在使用的時候類似於 EL 表達式,但是需要註意的是,SpEL 使用在 Spring Config 文件中。 二、格式:使用 #{} 作為界定符,所有在大括弧中的字元都將被認為成是 SeEL 三、作用: 1.通過 Bean 的 id 對 Bean 進行引用 2. ...


一、SpEL:Spring 表達式語言,在使用的時候類似於 EL 表達式,但是需要註意的是,SpEL 使用在 Spring Config 文件中

二、格式:使用 #{} 作為界定符,所有在大括弧中的字元都將被認為成是 SeEL

三、作用:

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

2.調用方法以及引用對象中的屬性

3.計算表達式的值

4.正則表達式的匹配

四、SpEL 字面值:

1.整數:<property name="age" value="#{23}"/>

2.小數:<property name="salary" value="#{2300.55}"/>

3.科學計數法:<property name="salary" value="#{1e4}"/>

4.字元串:<property name="empName" value="#{'emp01'}"/> 或 <property name='empName' value='#{"emp01"}'/>

5.布爾值:<property name="formal" value="#{false}"/>

五、引用 Bean、屬性和方法

1.引用其他 Bean:

<bean class="com.nucsoft.spring.bean.Employee" id="employee">
  <property name='empName' value='#{"emp01"}'/>
  <property name="age" value="#{23}"/>
</bean>

<bean class="com.nucsoft.spring.bean.Department" id="department">
  <property name="deptName" value="#{'dept01'}"/>
  <property name="employee" value="#{employee}"/>
</bean>

2.引用其他 Bean 的屬性

<bean class="com.nucsoft.spring.bean.Employee" id="employee">
  <property name='empName' value='#{"emp01"}'/>
  <property name="age" value="#{23}"/>
</bean>

<bean class="com.nucsoft.spring.bean.Department" id="department2" p:deptName="AAAA" p:employee-ref="employee">
</bean>

<bean class="com.nucsoft.spring.bean.Department" id="department">
  <property name="deptName" value="#{department2.deptName}"/>
  <property name="employee" value="#{employee}"/>
</bean>

控制台輸出:

Department{deptName='AAAA', employee=Employee{empName='emp01', age=23}}

註意:引用其他 Bean 的屬性是通過 getXxx() 方法來引用的

3.調用方法,支持鏈式操作

<bean class="com.nucsoft.spring.bean.Department" id="department">
  <property name="deptName" value="#{department2.deptName.toString().toLowerCase()}"/>
  <property name="employee" value="#{employee}"/>
</bean>

控制台輸出:

Department{deptName='aaaa', employee=Employee{empName='emp01', age=23}}

六、SpEL 支持的運算

1.數學運算符:+,-,*,/,%,^

+:

<bean class="com.nucsoft.spring.bean.Employee" id="employee">
  <property name='empName' value='#{"emp01"}'/>
  <property name="age" value="#{23}"/>
  <property name="salary" value="#{53.32 + 12.23}"/>
</bean>

控制台輸出:

Employee{empName='emp01', age=23, salary=65.55}

其他運算符使用類似。

2.字元串連接:+

<property name='empName' value='#{"emp01" +" "+ 12}'/>

控制台輸出:

Employee{empName='emp01 12', age=23, salary=-41.09}

3.比較運算符:<,>,==,<=,>=,lt,gt,eq,le,ge

<property name="formal" value="#{100 == 100}"/>

控制台輸出:

Employee{empName='emp01 12', age=23, salary=-41.09, formal=true}

4.邏輯運算符:and,or,not,|

<property name="formal" value="#{100 == 100 and 100 gt 80}"/>

控制台輸出:

Employee{empName='emp01 12', age=23, salary=-41.09, formal=true}

其他幾個與之類似。

5.if-else 運算符:? exp1 : exp2

<property name="formal" value="#{100 == 100 ? false : true}"/>

控制台輸出:

Employee{empName='emp01 12', age=23, salary=-41.09, formal=false}

6.正則表達式:matches

<property name="matchesEmail" value="#{'[email protected]' matches '/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})'}"/>

控制台輸出:

isMatchesEmail=false

七、調用靜態方法或靜態屬性。通過 T(), 返回一個類的對象

<property name="salary" value="#{T(java.lang.Math).PI * 1000}"/>

控制台輸出:

salary=3141.592653589793


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一.運算符:優先順序,結合性 一句話總結:點號自反非,算關邏賦移。 二.java關鍵字 instanceof 實例 volatile 易失 super 父類,超類 transient 短暫 synchronized 線程,同步 strictfp 嚴格,精準 package 包 throws 聲明一個異 ...
  • 一、表單標簽庫 1.1、簡介 從Spring2.0起就提供了一組全面的自動數據綁定標簽來處理表單元素。生成的標簽相容HTML 4.01與XHTML 1.0。表單標簽庫中包含了可以用在JSP頁面中渲染HTML元素的標簽。表單標記庫包含在spring-webmvc.jar中,庫的描述符稱為spring- ...
  • python之線程、進程和協程 目錄: 引言 一、線程 1.1 普通的多線程 1.2 自定義線程類 1.3 線程鎖 1.3.1 未使用鎖 1.3.2 普通鎖Lock和RLock 1.3.3 信號量(Semaphore) 1.3.4 事件(Event) 1.3.5 條件(condition) 1.3 ...
  • 這是我以前的BS4筆記,交流請聯繫 QQ 328123440 ...
  • 在PHP後端和客戶端數據交互的過程中,JSON數據中有時格式不定,一會兒是數組,一會兒是對象,弄得客戶端開發人員要崩潰的感覺。 因此,前後端相關人員先對PHP的json_encode函數原理有必要的瞭解是最重要的一個環節。 PHP中的array是個萬能的數據結構,並不像其它語言根據需要的場景會定義很 ...
  • 做leetcode的題 We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to guess which number I picked. Every time yo ...
  • 一、數組(一維): 對於聲明變數,int score1 = 81; 等等這些操作,如果我們有四個成績,是不是可以定義變數score 1、2、3、4呢?但是,如果我們要定義400個成績又當如何呢? 這就可以用到數組了,數組可以指定一個長度,然後在數組裡可以存放這個長度範圍的同類型數組,可以將數組理解為 ...
  • JSP的基本語法 一、JSP頁面中的JAVA代碼 二、JSP頁面中的指令 三、JSP頁面中的隱含對象(九大內置對象) 一、JSP頁面中的JAVA代碼 JSP表達式(方便輸出) JSP小腳本(完成相對較長的邏輯運算) JSP聲明(添加屬性或方法) 1、JSP表達式(格式:<%=%>) 註意:表達式結束 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...