Sping表达式语言--SpEL
Spring表达式语言---SpEL
是一个支持运行时查询和操作对象的强大的表达式语言
语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都将被认为是SpEL
SpEL为bean的属性进行动态赋值提供了便利
通过SpEL可以实现:
通过bean的id对bean进行引用
调用方法以及引用对象中的属性
计算表达式的值
正则表达式的匹配
SpEL:字面量
字面量的表示:
-整数:<property name="count" value="#{5}"/>
-小数:<property name="frequency" value="#{89.7}"/>
-科学记数法:<property name="capacity" value="#{1e4}"/>
-String可以使用单引号或双引号作为字符串的定界符号:<property name="name" value="#{'Tom'}"/>或<property name="name" value="#{"Tom"}"/>
-Boolean:<property name="enabled" value="#{false}"/>
SpEL:引用Bean、属性和方法
引用其他对象
<!-- 通过value属性和SpEL配置Bean之间的应用关系 -->
<property name="prefix" value="#{prefixGenerator}"/>
引用其他对象的属性
<!-- 通过value属性和SpEL配置suffix属性值为另一个bean的suffix属性值 -->
<property name="suffix" value="#{sequenceGenerator2.suffix}"/>
调用其他方法,还可以链式操作
<!-- 通过value属性和SpEL配置suffix属性值为另一个bean的方法的返回值 -->
<property name="suffix" value="#{sequenceGenerator2.toString()}"/>
<!-- 方法的链接 -->
<property name="suffix" value="#{sequenceGenerator2.toString().toUpperCase()}"/>
SpEL:支持的运算符
算术运算符:+、-、*、/、%、^
加号还可以用作字符串连接
比较运算符:<、 >、 ==、 <=、 >=、 It、 gt、 eq、 le、 ge
逻辑运算符:and、or、not、|
if-else运算符、三元表达式
正则表达式:matches
调用静态方法或静态属性:通过T()调用一个类的静态方法,它将返回一个Class Object,然后再调用相应的方法或属性:
<property name="initValue" value="#{T(java.lang.Math).PI}"/>
示例代码:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="address" class="com.yl.spel.Address">
<!-- 使用SpEL为属性赋一个字面值 -->
<property name="city" value="#{'beijing'}"></property>
<property name="street" value="#{'wudaokou'}"></property>
</bean> <bean id="car" class="com.yl.spel.Car">
<property name="brand" value="Audi"></property>
<property name="price" value="500000"></property>
<!-- 使用SpEL引用类的静态属性 -->
<property name="tyrePerimeter" value="#{T(java.lang.Math).PI * 80}"></property>
</bean> <bean id="person" class="com.yl.spel.Person">
<property name="name" value="Tom"></property>
<!-- 使用SpEL来引用其他的bean -->
<property name="car" value="#{car}"></property>
<!-- 使用SpEL来引用其他的bean的属性 -->
<property name="city" value="#{address.city}"></property>
<!-- 使用SpEL中使用运算符 -->
<property name="info" value="#{car.price > 300000 ? '金领':'白领'}"></property>
</bean>
</beans>
Sping表达式语言--SpEL的更多相关文章
- 7 -- Spring的基本用法 -- 12... Spring 3.0 提供的表达式语言(SpEL)
7.12 Spring 3.0 提供的表达式语言(SpEL) Spring表达式语言(简称SpEL)是一种与JSP 2 的EL功能类似的表达式语言,它可以在运行时查询和操作对象图.支持方法调用和基本字 ...
- Spring学习记录(七)---表达式语言-SpEL
SpEL---Spring Expression Language:是一个支持运行时查询和操作对象图表达式语言.使用#{...}作为定界符,为bean属性动态赋值提供了便利. ①对于普通的赋值,用Sp ...
- Spring3表达式语言(SpEL)学习笔记
最新地址请访问:http://leeyee.github.io/blog/2011/06/19/spring-expression-language Spring Excpression Langua ...
- Spring表达式语言SpEL
Spring表达式语言,简称SpEL,是一个支持运行时查询和操作对象图的强大的表达式语言.语法类似于EL:SpEL使用#{…}作为定界符,所有在大括号中的字符都将被认为是SpEL SpEL为bean属 ...
- Spring学习笔记--Spring表达式语言SpEL
Spring3引入了Spring表达式语言(Spring Expression Language,SpEL).SpEL是一种强大的.简洁的装配Bean的方式,它通过运行期执行的表达式将值装配到Bean ...
- spring4-2-bean配置-7-Spring表达式语言SpEL
- Spring表达式语言SpEL简单介绍
Spring3引入了Spring表达式语言(Spring Expression Language,SpEL). SpEL有非常多特性.比較经常使用的包含: 1.使用bean的id来引用bean, 以下 ...
- Spring表达式语言:SpEl
概念: 是一个支持运行时查询和操作的对象图的强大的表达式语言. 语法类似于EL:SpEl使用#{ ...}作为定界符,所有在大括号中的 字符都将被认为是SpEl SpEl为bean的属性进行动态赋值提 ...
- Spring3.0提供的表达式语言spel
package com.zf.spel; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.D ...
随机推荐
- ofbiz进阶之实体引擎配置文件
The Open For Business Project: Entity Engine Configuration Guide 原文链接:http://ofbiz.apache.org/docs/e ...
- 【网络】 NAT
NAT(Network Address Translation,网络地址转换)是1994年提出的.当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因 ...
- python调试总结
调试通常采用两种方式,打印日志调试以及运行时实时跟踪调试. 一.打印日志: 1. print不要看不起print,这是一切调试的起点,即便是调试Java或者C这种巨麻烦的编译语言,print仍然是常用 ...
- ***phpredis扩展安装总结
phpredis扩展安装总结:PHP扩展安装在[root@iZ254lfyd6nZ lampp]# cd include 目录下创建一个目录phpredis下载扩展:wget https://gith ...
- hdu 4678 Mine 博弈论
这是一题简单的博弈论!! 所有的空白+边界的数字(个数为n)为一堆,容易推出其SG函数值为n%2+1: 其他所有的数字(个数为m)的SG值为m%2. 再就是用dfs将空白部分搜一下即可!(注意细节) ...
- java CMS gc解析
转载: http://www.blogjava.net/killme2008/archive/2009/09/22/295931.html CMS,全称Concurrent Low Pause ...
- MySQL提示:The server quit without updating PID file问题的解决办法
错误如下: [root@snsgou mysql]# service mysql restartMySQL server PID file could not be found![失败]Startin ...
- 【BZOJ 1045】 1045: [HAOI2008] 糖果传递
1045: [HAOI2008] 糖果传递 Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数n& ...
- Weblogic下部署的应用,当更新文件时需要重新安装部署
JSP页面检查(秒):-1 Servlet重新加载检查(秒):-1 -1说明从不检查,故当更新文件时,需要重新部署,或重新安装部署.
- Time.deltaTime 含义和应用
第一種:使用Time.deltaTime 一秒內從第1個Frame到最後一個Frame所花的時間,所以不管電腦是一秒跑60格或者一秒30格.24格,值都會趨近於一. 就結果而言,deltaTime是為 ...