`
txidol
  • 浏览: 54800 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring笔记 - Spring Expression Language (SpEL表达式)

 
阅读更多

基本表达式

数字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]}"/>

分享到:
评论

相关推荐

    SSH笔记-SpEL

    Spring Expression Language(SpEL)是Spring框架中的一个强大特性,它为Spring应用提供了灵活的运行时表达式评估能力。SpEL主要用于在运行时查询和操作对象图,允许开发者在配置中定义动态行为。在这个SSH笔记中,...

    SpringSecurity笔记2-SpringSecurity命名空间

    - 它还允许自定义权限表达式,例如,`&lt;expression-handler&gt;`元素可以配置自定义的Spring Expression Language (SpEL)表达式处理器,扩展Spring Security的默认行为。 3. **Spring Security与SpEL的集成**: - ...

    spring3.x的读书笔记-1

    2. 引入了 Spring Expression Language (SpEL),一个强大的表达式语言,用于运行时查询和操作对象。 3. Spring JavaConfig 提供了通过 Java 类进行配置的选项,替代传统的 XML 配置。 4. OXM 功能的加入,用于对象和...

    springsecurity学习笔记

    8. **表达式语言(SpEL)**:Spring Security 使用Spring Expression Language(SpEL)来定义访问控制规则,允许开发者用更灵活的方式定义谁可以访问什么。 在"springsecurity学习笔记"中,你可能会涉及以下主题: ...

    spring的学习笔记

    **Spring Expression Language (SpEL)** SpEL是Spring提供的强大表达式语言,用于在运行时查询和操作Bean的属性,以及执行复杂的逻辑: - **5.1 概述**:介绍SpEL的基本概念,包括其在Bean定义中的应用场景。 - *...

    spring笔记之helloworld所需要的jar包

    5. **spring-expression.jar**(Spring Expression Language - SpEL):SpEL是Spring提供的表达式语言,用于在运行时查询和操作对象图。在配置文件中,我们可以使用SpEL来动态地评估属性值。 6. **spring-web.jar**...

    Java EE 框架整合 开发入门到实战-Spring+Spring MVC+MyBatis微课版复习笔记

    - Spring表达式语言(SPEL,Spring Expression Language):提供了一种强大的表达式语言来查询和操作对象图,运行时查询和操作对象图。 控制反转(IoC)和依赖注入(DI): - 控制反转是Spring框架的核心,它通过...

    spring-framework:spring-framework原始阅读笔记-spring源码阅读

    Spring允许我们在配置文件中使用SpEL(Spring Expression Language)进行表达式解析,以动态获取属性值。例如,我们可以使用SpEL表达式在运行时决定bean的属性值。此外,PropertyPlaceholderConfigurer和Environment...

    Spring学习笔记(8)----属性注入的方式

    @Value注解可以直接注入基本类型的值或者使用Spring Expression Language (SpEL)表达式获取值。如: ```java public class MyClass { @Value("${property.name}") private String propertyName; } ``` 这里`${...

    spring security3笔记

    - **表达式式访问控制**:使用@PreAuthorize、@PostAuthorize等注解,配合SpEL(Spring Expression Language)表达式进行细粒度的访问控制。 6. **集成其他Spring模块** - **Spring MVC**:与Spring Web MVC无缝...

    spring学习笔记(四)

    这里的`#{systemProperties['java.version']}`就是一个SpEL表达式,它会获取系统属性`java.version`的值。 除了`@Value`,Spring还提供了其他许多工具和注解,如`@Autowired`用于自动装配Bean,`@Component`、`@...

    spring学习笔记

    ### Spring学习笔记:深入探索SpEL(Spring Expression Language) #### SpEL简介 SpEL,即Spring Expression Language(Spring表达式语言),是Spring框架提供的一种强大的表达式语言,用于在运行时查询和操作...

    spring学习笔记 私塾在线

    Spring Expression Language (SpEL)是Spring框架中强大的内省和表达式评估工具。它允许在运行时查询和操作对象图。本章将解释如何使用SpEL进行条件判断、属性访问、算术运算以及调用方法等,是增强应用程序灵活性和...

    spring学习笔记(三)

    `@Value`是Spring提供的一种方便的方式来从配置文件或者表达式中获取值,并将其注入到Bean的属性中,可以是简单的字符串,也可以是复杂的SpEL(Spring Expression Language)表达式。 在Spring的学习中,依赖注入和...

    spring学习笔记LBY.pdf

    - `SpEL`(Spring Expression Language):用于在配置文件中执行表达式。 - **AOP**(面向切面编程):为Spring提供了AOP的支持,允许开发者以声明的方式添加业务行为。 - **Data Access/Integration**:提供数据...

    spring2.5_学习笔记

    五、SpEL(Spring Expression Language) Spring 2.5引入了强大的表达式语言SpEL,用于在运行时查询和操作对象图。SpEL提供了丰富的语法,可以用于属性访问、算术运算、逻辑判断以及方法调用,使得配置更加动态和...

    Spring Security tutorial 学习笔记(一)

    EAC 允许开发者用 SpEL(Spring Expression Language)编写复杂的访问规则。 **4. ** **访问决策策略** Spring Security 支持多种访问决策策略,如多数投票、首选最少权限等。当多个访问决策投票器对访问权限有...

    Spring2.5_学习笔记.doc.zip

    此外,Spring2.5还引入了SpEL(Spring Expression Language),这是一种强大的表达式语言,用于在运行时查询和操作对象图。它支持属性访问、方法调用、算术运算、比较和逻辑运算,以及条件和循环表达式,大大提升了...

    SpringSeurity三更笔记

    1. **权限表达式**:Spring Security支持使用SpEL(Spring Expression Language)进行细粒度的授权控制。例如,`@PreAuthorize("hasRole('ADMIN')")`确保只有角色为ADMIN的用户才能访问方法。 2. **访问决策策略**...

    编程不良人的spring security笔记

    Spring Security 提供了一种表达式语言(SpEL,Spring Expression Language),用于在访问控制规则中表达复杂的条件。例如,`hasRole('ROLE_ADMIN')` 和 `hasPermission(#object, 'READ')` 分别表示用户是否具有管理...

Global site tag (gtag.js) - Google Analytics