程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Spring基礎—— SpEL,spring基礎spel

Spring基礎—— SpEL,spring基礎spel

編輯:JAVA綜合教程

Spring基礎—— SpEL,spring基礎spel


一、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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved