歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Spring基礎—— SpEL

Spring基礎—— SpEL

日期:2017/3/1 9:14:06   编辑:Linux編程

一、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.linuxidc.spring.bean.Employee" id="employee">
  <property name='empName' value='#{"emp01"}'/>
  <property name="age" value="#{23}"/>
</bean>

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

2.引用其他 Bean 的屬性

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

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

<bean class="com.linuxidc.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.linuxidc.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.linuxidc.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

Spring中如何配置Hibernate事務 http://www.linuxidc.com/Linux/2013-12/93681.htm

Struts2整合Spring方法及原理 http://www.linuxidc.com/Linux/2013-12/93692.htm

基於 Spring 設計並實現 RESTful Web Services http://www.linuxidc.com/Linux/2013-10/91974.htm

Spring-3.2.4 + Quartz-2.2.0集成實例 http://www.linuxidc.com/Linux/2013-10/91524.htm

使用 Spring 進行單元測試 http://www.linuxidc.com/Linux/2013-09/89913.htm

運用Spring注解實現Netty服務器端UDP應用程序 http://www.linuxidc.com/Linux/2013-09/89780.htm

Spring 3.x 企業應用開發實戰 PDF完整高清掃描版+源代碼 http://www.linuxidc.com/Linux/2013-10/91357.htm

Spring 的詳細介紹:請點這裡
Spring 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved