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. Nagios 监控Windows服务器(详细篇)

    1. 监控内容 windows服务器的内部参数包括以下 a. 内存使用状况 b. CPU负载 c. 磁盘使用状况 d. 服务状态 e. 运行的进程 2. 监控原理 在windows服务器内安装NSCl ...

  2. Nginx+php+mysql+wordpress搭建自己的博客站点

    服务器环境要求Centos 6 或以上版本(由于我们的目标是半小时内搭建好,那就选简单yum安装)MySQL 5或更新版本Nginx 1或更新版本PHP 5 或更新版本 php-fpm 5或更新版本 ...

  3. tar工具(打包,压缩)

    tar工具(打包,压缩)========================= tar打包工具 -c:表示建立一个tar包或者压缩文件包-x:表示解包或者解压缩-v:表示可视化-f: 后面跟文件名(即-f ...

  4. 列表,元组的操作,for循环

    1.列表 # li = ["wang","jian","wei"] # print(li) # 结果:['wang', 'jian', 'w ...

  5. 用php读取xml数据

    parser是php内置的一个用来处理xml的解析器,它的工作由三个事件组成:起始标签. 读取数据.结束标签. 也就是说在对xml进行处理的时候每当遇到起始标签.数据和结束标签的时候函数会做相应的动作 ...

  6. Spark提交任务(Standalone和Yarn)

    Spark Standalone模式提交任务 Cluster模式: ./spark-submit  \--master spark://node01:7077  \--deploy-mode clus ...

  7. python pycharm2018开启debug模式

    为什么需要开启DEBUG模式1.如果开启了DEBUG模式,那么在代码中如果抛出了异常,在浏览器的页面中可以看到具体的错误信息,以及具体的错误代码位置,方便开发者调试.2.如果开启DEBUG模式,那么以 ...

  8. POJ 1180 斜率优化DP(单调队列)

    Batch Scheduling Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4347   Accepted: 1992 ...

  9. 1079: [SCOI2008]着色方案

    链接 思路 首先是dp,如果直接用每个种颜色的剩余个数做状态的话,复杂度为5^15. 由于c<=5,所以用剩余数量的颜色的种类数做状态:f[a][b][c][d][e][last]表示剩余数量为 ...

  10. web在线调试

    xx <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta h ...