基本表达式
数字5 <property name="count" value="#{5}"/>
联合方式 <property name="message" value="The value is #{5}"/>
浮点型 <property name="frequency" value="#{89.7}"/>
科学表达式10000.0 <property name="capacity" value="#{1e4}"/>
String <property name="name" value="#{'Chuck'}"/> <property name='name' value='#{"Chuck"}'/>
Boolean <property name="enabled" value="#{false}"/>
引用Bean <property name="instrument" value="#{saxophone}"/> 等价 <property name="instrument" ref="saxophone"/>
引用Bean属性 <property name="song" value="#{kenny.song}"/>
引用Bean方法 <property name="song" value="#{songSelector.selectSong()}"/>
进阶一 <property name="song" value="#{songSelector.selectSong().toUpperCase()}"/>
进阶二 防空指针 <property name="song" value="#{songSelector.selectSong()?.toUpperCase()}"/> 防空指针
使用静态类 T(java.lang.Math)
使用静态属性 <property name="multiplier" value="#{T(java.lang.Math).PI}"/>
使用静态方法 <property name="randomNumber" value="#{T(java.lang.Math).random()}"/>
运算表达式
+<property name="adjustedAmount" value="#{counter.total+42}"/>
- <property name="adjustedAmount" value="#{counter.total-20}"/>
* <property name="circumference" value="#{2 *T(java.lang.Math).PI*circle.radius}"/>
/ <property name="average" value="#{counter.total/counter.count}"/>
% <property name="remainder" value="#{counter.total%counter.count}"/>
^ <property name="area" value="#{T(java.lang.Math).PI*circle.radius^2}"/>
+ overloaded <property name="fullName value="#{performer.firstName + ' ' + performer.lastName}"/>
== eq equal <property name="equal" value="#{counter.total==100}"/>
<= <propertyname="hasCapacity"value="#{counter.total le 100000}"/>
Equal== eq
Less than < lt
Less than or equals <= le
Greater than > gt
Greater than or equals >= ge
逻辑表达式
andA logical AND operation; both sides must evaluate true for the expression to be true
or A logical OR operation; either side must evaluate true for the expression to be true
not or ! A logical NOT operation; negates the target of the operation
<property name="largeCircle" value="#{shape.kind =='circle'andshape.perimeter gt 10000}"/>
<property name="outOfStock" value="#{!product.available}"/>
条件表达式 ?: <property name="instrument" value="#{songSelector.selectSong()=='JingleBells'?piano:saxophone}"/>
<propertyname="song" value="#{kenny.song !=null?kenny.song:'Greensleeves'}"/>
等价 Elvis operator <propertyname="song"value="#{kenny.song?:'Greensleeves'}"/>
正则表达式 <property name="validEmail"value= "#{admin.email matches '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.com'}"/>
集合处理
<util:listid="cities">
<bean class="com.habuma.spel.cities.City"
p:name="Chicago"p:state="IL"p:population="2853114"/>
<bean class="com.habuma.spel.cities.City"
p:name="LasCruces"p:state="NM"p:population="91865"/>
</util:list>
List <property name="chosenCity" value="#{cities[2]}"/>
进阶 <property name="chosenCity" value="#{cities[T(java.lang.Math).random()*cities.size()]}"/>
Map <property name="chosenCity" value="#{cities['Dallas']}"/>
Properties <util:properties id="settings" location="classpath:settings.properties"/>
Properties <property name="accessToken" value="#{settings['twitter.accessToken']}"/>
systemEnvironment <property name="homePath" value="#{systemEnvironment['HOME']}"/>
systemProperties <property name="homePath" value="#{systemProperties['application.home']}"/>
String s 'This is a test'[3]
.?[] 条件选择成员 <property name="bigCities" value="#{cities.?[population gt 100000]}"/>
.^[] and .$[], for 第一个和最后一个匹配成员 <property name="aBigCity" value="#{cities.^[population gt 100000]}"/>
.![] 抽取集合 List <property name="cityNames" value="#{cities.![name]}"/>
进阶 <property name="cityNames" value="#{cities.![name+' , '+state]}"/>
进阶 <property name="cityNames" value="#{cities.?[population gt 100000].![name+' ,'+state]}"/>
分享到:
相关推荐
Spring Expression Language(SpEL)是Spring框架中的一个强大特性,它为Spring应用提供了灵活的运行时表达式评估能力。SpEL主要用于在运行时查询和操作对象图,允许开发者在配置中定义动态行为。在这个SSH笔记中,...
- 它还允许自定义权限表达式,例如,`<expression-handler>`元素可以配置自定义的Spring Expression Language (SpEL)表达式处理器,扩展Spring Security的默认行为。 3. **Spring Security与SpEL的集成**: - ...
2. 引入了 Spring Expression Language (SpEL),一个强大的表达式语言,用于运行时查询和操作对象。 3. Spring JavaConfig 提供了通过 Java 类进行配置的选项,替代传统的 XML 配置。 4. OXM 功能的加入,用于对象和...
8. **表达式语言(SpEL)**:Spring Security 使用Spring Expression Language(SpEL)来定义访问控制规则,允许开发者用更灵活的方式定义谁可以访问什么。 在"springsecurity学习笔记"中,你可能会涉及以下主题: ...
**Spring Expression Language (SpEL)** SpEL是Spring提供的强大表达式语言,用于在运行时查询和操作Bean的属性,以及执行复杂的逻辑: - **5.1 概述**:介绍SpEL的基本概念,包括其在Bean定义中的应用场景。 - *...
5. **spring-expression.jar**(Spring Expression Language - SpEL):SpEL是Spring提供的表达式语言,用于在运行时查询和操作对象图。在配置文件中,我们可以使用SpEL来动态地评估属性值。 6. **spring-web.jar**...
- Spring表达式语言(SPEL,Spring Expression Language):提供了一种强大的表达式语言来查询和操作对象图,运行时查询和操作对象图。 控制反转(IoC)和依赖注入(DI): - 控制反转是Spring框架的核心,它通过...
Spring允许我们在配置文件中使用SpEL(Spring Expression Language)进行表达式解析,以动态获取属性值。例如,我们可以使用SpEL表达式在运行时决定bean的属性值。此外,PropertyPlaceholderConfigurer和Environment...
@Value注解可以直接注入基本类型的值或者使用Spring Expression Language (SpEL)表达式获取值。如: ```java public class MyClass { @Value("${property.name}") private String propertyName; } ``` 这里`${...
- **表达式式访问控制**:使用@PreAuthorize、@PostAuthorize等注解,配合SpEL(Spring Expression Language)表达式进行细粒度的访问控制。 6. **集成其他Spring模块** - **Spring MVC**:与Spring Web MVC无缝...
这里的`#{systemProperties['java.version']}`就是一个SpEL表达式,它会获取系统属性`java.version`的值。 除了`@Value`,Spring还提供了其他许多工具和注解,如`@Autowired`用于自动装配Bean,`@Component`、`@...
### Spring学习笔记:深入探索SpEL(Spring Expression Language) #### SpEL简介 SpEL,即Spring Expression Language(Spring表达式语言),是Spring框架提供的一种强大的表达式语言,用于在运行时查询和操作...
Spring Expression Language (SpEL)是Spring框架中强大的内省和表达式评估工具。它允许在运行时查询和操作对象图。本章将解释如何使用SpEL进行条件判断、属性访问、算术运算以及调用方法等,是增强应用程序灵活性和...
`@Value`是Spring提供的一种方便的方式来从配置文件或者表达式中获取值,并将其注入到Bean的属性中,可以是简单的字符串,也可以是复杂的SpEL(Spring Expression Language)表达式。 在Spring的学习中,依赖注入和...
- `SpEL`(Spring Expression Language):用于在配置文件中执行表达式。 - **AOP**(面向切面编程):为Spring提供了AOP的支持,允许开发者以声明的方式添加业务行为。 - **Data Access/Integration**:提供数据...
五、SpEL(Spring Expression Language) Spring 2.5引入了强大的表达式语言SpEL,用于在运行时查询和操作对象图。SpEL提供了丰富的语法,可以用于属性访问、算术运算、逻辑判断以及方法调用,使得配置更加动态和...
EAC 允许开发者用 SpEL(Spring Expression Language)编写复杂的访问规则。 **4. ** **访问决策策略** Spring Security 支持多种访问决策策略,如多数投票、首选最少权限等。当多个访问决策投票器对访问权限有...
此外,Spring2.5还引入了SpEL(Spring Expression Language),这是一种强大的表达式语言,用于在运行时查询和操作对象图。它支持属性访问、方法调用、算术运算、比较和逻辑运算,以及条件和循环表达式,大大提升了...
1. **权限表达式**:Spring Security支持使用SpEL(Spring Expression Language)进行细粒度的授权控制。例如,`@PreAuthorize("hasRole('ADMIN')")`确保只有角色为ADMIN的用户才能访问方法。 2. **访问决策策略**...
Spring Security 提供了一种表达式语言(SpEL,Spring Expression Language),用于在访问控制规则中表达复杂的条件。例如,`hasRole('ROLE_ADMIN')` 和 `hasPermission(#object, 'READ')` 分别表示用户是否具有管理...