星空网 > 软件开发 > Java

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="#{'a@b.com' 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基础—— SpEL

关键词:Spring

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

今年,跨境电商应该这么做:https://www.ikjzd.com/articles/117912
欧美强调没必须戴口罩,中国专家:有必要戴:https://www.ikjzd.com/articles/117914
Shopee严厉打击假冒品牌 加大成人商品管控力度!:https://www.ikjzd.com/articles/117915
黑色星期一!姐夫一天损失70亿美元,特朗普急得跳脚!:https://www.ikjzd.com/articles/117917
2020年全球最具创新力公司排名:Snap居榜首 瑞幸第17:https://www.ikjzd.com/articles/117918
亚马逊Buy Box消失的原因是什么?:https://www.ikjzd.com/articles/117919
在古巴做游轮 古巴旅游项目:https://www.vstour.cn/a/363194.html
西藏旅游攻略自驾游需要多少天 去西藏旅游自驾游要多久时间:https://www.vstour.cn/a/363195.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流