SpEl语言的目的之一是防止注入外部属性的代码硬代码化.如@Value("#{student.name}")这个注解的意思是把Student类的name的属性值注入进去。其中student指向Student,是Student的id.

SpEl的作用是:

1.The ability to reference beans by their IDs;

2.Invoking methods and accessing propeerties on objects

3.Mathmatical,relational,and logical operations on values

4.Regular expression matching,

5.Collection manipulation.

SpEl的示例代码如下:

一:注入基本类型以及Strinig 类型的情况:

#{3.14}//注入double。

#{1}//注入整形

#{'I love our coutry'}//注入字符串

#{false}//注入boolean.

二:引用其他类的属性、方法。

#{student.name}

#{student.hello()}//其他类的方法

#{student?.hello()}//这个表达式的意思是:如果student为null的情况下,不会调用hello()这个方法,在student不为空时会调用student这个方法。

?.称为type-safe operator.

三:类中的静态变量和静态方法的调用。

#{T(java.lang.Math).PI}//调用Math类中的静态变量。

#{T(java.lang.Math).abs(-3)}//调用Math类中的静态方法。

四:在集合中的运用。

#{jukebox.song[2]}//把jukebox这个类中song中的第二个元素注入进来。
其中Jukebox的代码如下:
 package com.advancedWiring.ambiguityIniAutowiring2;

 import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import java.util.ArrayList;
import java.util.List; /**
* Created by ${秦林森} on 2017/6/10.
*/
public class Jukebox {
private List<String> song; public List<String> getSong() {
return song;
}
public void setSong(List<String> song) {
this.song = song;
}
public void IteratorList(){
for(String s:song){
System.out.println(s);
}
}
}

song注入值的.xml文件如下:

  <util:list id="list">
<value>I</value>
<value>am</value>
<value>chinese</value>
</util:list>
<bean id="jukebox" class="com.advancedWiring.ambiguityIniAutowiring2.Jukebox" p:song-ref="list"/>

所以#{jukebox.song[2]}也就是:#{'chinese'}

选择运算符:     .?[]
#{jukebox.songs.?[artist eq 'Aerosmith']}//这个表达式的意思是:选择jukebox的属性songs,和songs中的属性artist
并且这个artist属性值为Aerosmith的值。 .^[] for selecting the first matching entry and
.$[] for selecting the last matching entry.

spring in action 学习笔记十三:SpEL语言(Spring Expression Language)的更多相关文章

  1. spring in action 学习笔记三:对spring 容器的理解,以及如何利用AnnotationConfigApplicationContext这个容器创建对象

    一:spring的容器就是bean所居住的地点,这个居民点有很多的bean,有外来的bean(相当于创建了一个bean),有出去谋生的(相当于消亡了一个bean),他们之间都有某种联系 (bean与b ...

  2. spring in action学习笔记十五:配置DispatcherServlet和ContextLoaderListener的几种方式。

    在spring in action中论述了:DispatcherServlet和ContextLoaderListener的关系,简言之就是DispatcherServlet是用于加载web层的组件的 ...

  3. spring in action 学习笔记十四:用纯注解的方式实现spring mvc

    在讲用纯注解的方式实现springmvc之前先介绍一个类:AbstractAnnotationDispatcherServletInitializer.这个类的作用是:任何一个类继承AbstractA ...

  4. spring in action学习笔记一:DI(Dependency Injection)依赖注入之CI(Constructor Injection)构造器注入

    一:这里先说一下DI(Dependency Injection)依赖注入有种表现形式:一种是CI(Constructor Injection)构造方法注入,另一种是SI(Set Injection) ...

  5. spring in action学习笔记十六:配置数据源的几种方式

    第一种方式:JNDI的方式. 用xml配置的方式的代码如下: 1 <jee:jndi-lookup jndi-name="/jdbc/spittrDS" resource-r ...

  6. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:SSM(Spring+Spring MVC+MyBatis)框架整合搭建详细步骤

    因为 Spring MVC 是 Spring 框架中的一个子模块,所以 Spring 与 SpringMVC 之间不存在整合的问题.实际上,SSM 框架的整合只涉及 Spring 与 MyBatis ...

  7. Spring in Action学习笔记(1)

    Spring基础 IoC 控制反转, 也称为DI-依赖注入 一.装配bean 推荐顺序:自动装配 -> JavaConfig装配 -> XML装配 1. 自动装配 @Component 注 ...

  8. Spring in Action 学习笔记三-AOP

    面向切面的Spring 2015年10月9日 11:30             屏幕剪辑的捕获时间: 2015-10-9 14:30             屏幕剪辑的捕获时间: 2015-10-9 ...

  9. Spring in Action 学习笔记二-DI

    装配bean 2015年10月9日 9:49             Sprng中,对象无需自己负责查找或创建其关联的其他对象.相关,容器负责吧需要相互协作的对象引用赋予各个对象. 创建应用对象之间协 ...

随机推荐

  1. Linux终端显示控制字符

    在Linux中, 我们时常要将一个命令的输出作为另外一个命令的输入进行下一步处理操作. 有时, 如果一个命令的输出中有不可见的控制字符时, 有可能会导致后续操作出错. 而这些控制字符很可能是不可打印的 ...

  2. redis数据库的安装配置

    redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的value类型相对更多,包括strin ...

  3. 笔记-scrapy-pipeline

    笔记-scrapy-pipeline 1.简介 scrapy抓取数据后,使用yield发送item对象至pipeline,pipeline顺序对item进行处理. 一般用于: 清洗,验证,检查数据: ...

  4. DHCP服务(dhcpd)

    DHCP动态分配主机地址(Dynamic Host Configuration Protocol) 动态主机配置协议(DHCP)是一种基于UDP协议且仅限于在局域网内部使用的网络协议,主要用于大型的局 ...

  5. 获取HTTP请求头中的地址

    技术交流群:233513714 public static String getIpAddr(HttpServletRequest request) { String ip = request.get ...

  6. c语言字符串内存分配小记

    一.疑问 有这样一道题: #include "stdio.h" int main() { ]; ]; scanf("%s", word1); scanf(&qu ...

  7. iOS笔记053- Quartz2D-练习

    1.水印处理 给图片添加文字.图片水印 // 水印处理 - (void)shuiyin { // 水印处理 UIImage *image  = [UIImage imageNamed:@"4 ...

  8. WIN10把照片查看器设为默认看图软件

    WIN10默认是PHOTO,没有以前WIN7的照片查看器好用,要改回来的方法如下:   在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo ...

  9. HTML--留

    1.html图像   <p> 这是个图像<img src=“\路径\”  alt=“图像不显示不出来时代替图片” width=“1” height=“1” >   </p ...

  10. 【已解决】UBuntu16.04软件中心更新后只有桌面

    出现问题之前 安装好系统之后,成功启动系统,根据软件中心提示,升级电脑安装的软件,如下图所示.点击install(安装)开始更新,之后无任何提示,其实这个时候已经出现了升级异常. 呈现问题 操作步骤一 ...