Spring基础—— SpEL
2016-07-18 20:29
381 查看
一、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:
2.引用其他 Bean 的属性
控制台输出:
Department{deptName='AAAA', employee=Employee{empName='emp01', age=23}}
注意:引用其他 Bean 的属性是通过 getXxx() 方法来引用的
3.调用方法,支持链式操作
控制台输出:
Department{deptName='aaaa', employee=Employee{empName='emp01', age=23}}
六、SpEL 支持的运算
1.数学运算符:+,-,*,/,%,^
+:
控制台输出:
Employee{empName='emp01', age=23, salary=65.55}
其他运算符使用类似。
2.字符串连接:+
控制台输出:
Employee{empName='emp01 12', age=23, salary=-41.09}
3.比较运算符:<,>,==,<=,>=,lt,gt,eq,le,ge
控制台输出:
Employee{empName='emp01 12', age=23, salary=-41.09, formal=true}
4.逻辑运算符:and,or,not,|
控制台输出:
Employee{empName='emp01 12', age=23, salary=-41.09, formal=true}
其他几个与之类似。
5.if-else 运算符:? exp1 : exp2
控制台输出:
Employee{empName='emp01 12', age=23, salary=-41.09, formal=false}
6.正则表达式:matches
控制台输出:
isMatchesEmail=false
七、调用静态方法或静态属性。通过 T(), 返回一个类的对象
控制台输出:
salary=3141.592653589793
二、格式:使用 #{} 作为界定符,所有在大括号中的字符都将被认为成是 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开发环境配置以及入门案例
- SpringMVC的Handler处理及url映射
- 数组
- 不能从 java.io.InputStream 转换为 org.omg.CORBA.portable.InputStream
- 如何把java项目(java文件)打包成.jar文件,双击即可运行.
- 属性动画步骤总结——包含xml实现与java代码实现
- java反射机制(总结)
- 根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第4版)
- ubuntu16.04安装jdk并配置
- 刷题有感,java的大整数包运算
- [JavaWeb]表单提交的验证(onSubmit和function的应用)
- [JavaWeb]表单提交的验证(onSubmit和function的应用)
- java.lang.NoClassDefFoundError: weblogic/rmi/extensions/DisconnectListener
- java EE基础知识
- Spring面试题
- Spring整合MyBatis(二)源码分析
- Java并发机制及锁的实现原理
- Java类的构造方法
- java之抽象类与内部类
- 设计模式(2)_代理模式 ————— 控制对象访问