一、SpEL

  1.1       简介

      Spring Expression Language,Spring表达式语言,简称SpEL。支持运行时查询并可以操作对象图。

      和JSP页面上的EL表达式、Struts2中用到的OGNL表达式一样,SpEL根据JavaBean风格的getXxx()、setXxx()方法定义的属性访问对象图,完全符合我们熟悉的操作习惯

  1.2       基本语法

      SpEL使用#{…}作为定界符,所有在大框号中的字符都将被认为是SpEL表达式。

  1.3       使用字面量

      ●整数:<property name="count" value="#{5}"/>

      ●小数:<property name="frequency" value="#{89.7}"/>

      ●科学计数法:<property name="capacity" value="#{1e4}"/>

      ●String类型的字面量可以使用单引号或者双引号作为字符串的定界符号

        <property name=“name” value="#{'Chuck'}"/>

        <property name='name' value='#{"Chuck"}'/>

      ●Boolean:<property name="enabled" value="#{false}"/>

  1.4       引用其他bean

<bean id="emp04" class="com.neuedu.parent.bean.Employee">

<property name="empId" value="1003"/>

<property name="empName" value="Kate"/>

<property name="age" value="21"/>

<property name="detp" value="#{dept}"/>

</bean>

  1.5       引用其他bean的属性值作为自己某个属性的值

<bean id="emp05" class="com.neuedu.parent.bean.Employee">

<property name="empId" value="1003"/>

<property name="empName" value="Kate"/>

<property name="age" value="21"/>

<property name="deptName" value="#{dept.deptName}"/>

</bean>

  1.6       调用非静态方法

<!-- 创建一个对象,在SpEL表达式中调用这个对象的方法 -->

<bean id="salaryGenerator" class="com.neuedu.spel.bean.SalaryGenerator"/>

<bean id="employee" class="com.neuedu.spel.bean.Employee">

<!-- 通过对象方法的返回值为属性赋值 -->

<property name="salayOfYear" value="#{salaryGenerator.getSalaryOfYear(5000)}"/>

</bean>

  1.7       调用静态方法

<bean id="employee" class="com.neuedu.spel.bean.Employee">

<!-- 在SpEL表达式中调用类的静态方法 -->

<property name="circle" value="#{T(java.lang.Math).PI*20}"/>

</bean>

  1.8       运算符

      ①算术运算符:+、-、*、/、%、^

      ②字符串连接:+

      ③比较运算符:<、>、==、<=、>=、lt、gt、eq、le、ge

      ④逻辑运算符:and, or, not, |

      ⑤三目运算符:判断条件?判断结果为true时的取值:判断结果为false时的取值

      ⑥正则表达式:matches

Spring IOC机制使用SpEL的更多相关文章

  1. Spring IOC机制之使用注解配置bean

    一. 通过注解配置bean 1.1       概述 相对于XML方式而言,通过注解的方式配置bean更加简洁和优雅,而且和MVC组件化开发的理念十分契合,是开发中常用的使用方式. 1.2       ...

  2. Spring IOC容器分析(4) -- bean创建获取完整流程

    上节探讨了Spring IOC容器中getBean方法,下面我们将自行编写测试用例,深入跟踪分析bean对象创建过程. 测试环境创建 测试示例代码如下: package org.springframe ...

  3. Spring Ioc工作机制 初步

    Spring IoC工作原理 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖 ...

  4. Spring IOC的核心机制:实例化与注入

    上文我们介绍了IOC和DI,IOC是一种设计模式,DI是它的具体实现,有很多的框架都有这样的实现,本文主要以spring框架的实现,来看具体的注入实现逻辑. spring是如何将对象加入容器的 spr ...

  5. Spring学习-spring核心机制-IOC依赖注入

    转载自:http://www.cnblogs.com/chenssy/archive/2012/11/11/2765266.html 今天复习一下spring两大特性之一:IOC依赖注入,看了一下大佬 ...

  6. (反射+内省机制的运用)简单模拟spring IoC容器的操作

    简单模拟spring IoC容器的操作[管理对象的创建.管理对象的依赖关系,例如属性设置] 实体类Hello package com.shan.hello; public class Hello { ...

  7. 深入理解Spring IoC容器和动态代理机制

    Deployment期间验证 实现一: <bean id="theTargetBean" class="..."/> <bean id=&qu ...

  8. 关于Spring IOC (DI-依赖注入)需要知道的一切

    关联文章: 关于Spring IOC (DI-依赖注入)你需要知道的一切 关于 Spring AOP (AspectJ) 你该知晓的一切 <Spring入门经典>这本书无论对于初学者或者有 ...

  9. 关于Spring IOC (DI-依赖注入)

    <Spring入门经典>这本书无论对于初学者或者有经验的工程师还是很值一看的,最近花了点时间回顾了Spring的内容,在此顺带记录一下,本篇主要与spring IOC相关 ,这篇博文适合初 ...

随机推荐

  1. codeforce 510C Fox And Names(拓扑排序)

    Fox And Names time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  2. 2018年长沙理工大学第十三届程序设计竞赛 H数学考试

    链接:https://www.nowcoder.com/acm/contest/96/H来源:牛客网 数学考试 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  3. Rails的静态资源管理(四)—— 生产环境的 Asset Pipeline

    官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...

  4. 2014.2.23加载大数据时不闪烁的listView

    namespace 相册处理 { //将ListView重载为此新类,解决加载过程中闪烁的问题 //在designer.cs中改写: //private ListViewNeverFlickering ...

  5. qt安装必要的库 qt开源安装包下载

    yum install mesa-libGL-devel mesa-libGLU-devel #yum install freeglut-devel http://www.qt.io/download ...

  6. xcode编译静态库选择cpu架构

    此前编译了一个静态库,默认支持了armv7,armv7s,arm64 编译的话肯定是上面三个静态库分别编译出来,然后在把这三个合并成一个单独的库. 如果单个库的大小是10M,那编译总的库大概就30M了 ...

  7. MySQL存储引擎 -- MyISAM 与 InnoDB 实现

    一.MyISAM索引实现MyISAM引擎使用B树作为索引结构,叶节点的data域存放的是数据记录的地址. MyISAM主键索引这里设表一共有三列,假设我们以Col1为主键,Col2为辅助索引.则下图是 ...

  8. JavaScript的作用域与闭包

    JavaScript的作用域以函数为界,不同的函数拥有相对独立的作用域.函数内部可以声明和访问全局变量,也可以声明局部变量(使用var关键字,函数的参数也是局部变量),但函数外部无法访问内部的局部变量 ...

  9. Python01 python入门介绍

    1 python简介 1.1 为什么学python python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van ...

  10. Java3D读取3DMax模型并实现鼠标拖拽、旋转、滚轮缩放等功能

    /**-------------------------------------------------代码区--------------------------------------------- ...