本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

本人互联网技术爱好者,互联网技术发烧友

微博:伊直都在0221

QQ:951226918

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.Spring表达式语言:SpEL

  1)Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言

   2)语法类似于 EL:SpEL 使用 #{…} 作为定界符,所有在大框号中的字符都将被认为是 SpEL

  3)SpEL 为 bean 的属性进行动态赋值提供了便利

   4)通过 SpEL 可以实现:  

    ① 通过 bean 的 id 对 bean 进行引用  

    ② 调用方法以及引用对象中的属性

    ③ 计算表达式的值

    ④ 正则表达式的匹配

2.支持的运算

         

代码测试:

  

Car 
 package com.jason.spring.spel;

 public class Car {
private String brand;
private double price; //轮胎的周长
private double tyrePerimeter; public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
} public double getTyrePerimeter() {
return tyrePerimeter;
}
public void setTyrePerimeter(double tyrePerimeter) {
this.tyrePerimeter = tyrePerimeter;
}
@Override
public String toString() {
return "Car [brand=" + brand + ", price=" + price + ", tyrePerimeter="
+ tyrePerimeter + "]";
} }
Person 
 package com.jason.spring.spel;

 public class Person {
private String name;
private Car car; // 引用address bean 的city属性
private String city; // 根据car 的price 确定info: car.price >= 300000 ? 金领 :白领
private String info; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Car getCar() {
return car;
} public void setCar(Car car) {
this.car = car;
} public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
} public String getInfo() {
return info;
} public void setInfo(String info) {
this.info = info;
} @Override
public String toString() {
return "Person [name=" + name + ", car=" + car + ", city=" + city
+ ", info=" + info + "]";
} }
beans-spel.xml
 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="address" class="com.jason.spring.spel.Address">
<!-- 使用spel 为属性赋一个字面值 -->
<property name="city" value="#{'BeiJing'}"></property>
<property name="street" value="#{'Wudaokou'}"></property>
</bean> <bean id="car" class="com.jason.spring.spel.Car">
<property name="brand" value="Audi"></property>
<property name="price" value="500000"></property>
<!-- 使用 Spel 引用类的静态属性 -->
<property name="tyrePerimeter" value="#{T(java.lang.Math).PI * 80}"></property>
</bean> <bean id="person" class="com.jason.spring.spel.Person">
<!-- 使用spel 来引用其他的bean -->
<property name="car" value="#{car}"></property>
<!-- 使用spel 来引用其他bean的 属性 -->
<property name="city" value="#{address.city}"></property>
<!-- 在spel 中使用运算符 -->
<property name="info" value="#{car.price > 300000 ? '金领' :'白领'}"></property>
<property name="name" value="Tom"></property>
</bean> </beans>
Main 
 package com.jason.spring.spel;

 import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans-spel.xml");
Address address = (Address) applicationContext.getBean("address");
System.out.println(address); Car car = (Car) applicationContext.getBean("car");
System.out.println(car); Person person = (Person) applicationContext.getBean("person");
System.out.println(person);
} }

[原创]java WEB学习笔记100:Spring学习---Spring Bean配置:SpEL详细介绍及代码演示的更多相关文章

  1. 学习笔记:APP切图那点事儿–详细介绍android和ios平台

    学习笔记:APP切图那点事儿–详细介绍android和ios平台 转载自:http://www.woofeng.cn/articles/168.html   版权归原作者所有 作者:亚茹有李 原文地址 ...

  2. Spring之配置文件bean作用域的详细介绍

    Spring的配置文件applicationContext.xml中bean作用域的详细介绍: 1:对象的创建:单例和多例        scope="singleton",默认值 ...

  3. [原创]java WEB学习笔记95:Hibernate 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. Spring框架学习笔记(5)——Spring Boot创建与使用

    Spring Boot可以更为方便地搭建一个Web系统,之后服务器上部署也较为方便 创建Spring boot项目 1. 使用IDEA创建项目 2. 修改groupid和artifact 3. 一路n ...

  7. Spring实战第四章学习笔记————面向切面的Spring

    Spring实战第四章学习笔记----面向切面的Spring 什么是面向切面的编程 我们把影响应用多处的功能描述为横切关注点.比如安全就是一个横切关注点,应用中许多方法都会涉及安全规则.而切面可以帮我 ...

  8. Spring框架学习笔记(8)——spring boot+mybatis plus+mysql项目环境搭建

    之前写的那篇Spring框架学习笔记(5)--Spring Boot创建与使用,发现有多小细节没有提及,,正好现在又学习了mybatis plus这款框架,打算重新整理一遍,并将细节说清楚 1.通过I ...

  9. 学习笔记:CentOS7学习之十九:Linux网络管理技术

    目录 学习笔记:CentOS7学习之十九:Linux网络管理技术 本文用于记录学习体会.心得,兼做笔记使用,方便以后复习总结.内容基本完全参考学神教育教材,图片大多取材自学神教育资料,在此非常感谢MK ...

随机推荐

  1. php 实现推技术comet(转)

    实现实时通信一般有两种方式:socket或comet.socket是比较好的解决方案,问题在于不是所有的浏览器都兼容,服务器端实现起来也稍微有点麻烦.相比之下,comet(基于HTTP长连接的&quo ...

  2. 开源工作流引擎CCFlow 学习专区

    http://bbs.ccflow.org/index.aspx 官网:http://www.ccflow.org/

  3. 关于Autoit上传文件的问题

    Autoit上传文件需要安装两个软件: 使用这个做文件上传时:在代码中需要添加的代码如下: Runtime.getRuntime().exec("d:/zhpg.exe"); D盘 ...

  4. 浅谈iOS中的userAgent

    浅谈iOS中的userAgent   User-Agent(用户代理)字符串是Web浏览器用于声明自身型号版本并随HTTP请求发送给Web服务器的字符串,在Web服务器上可以获取到该字符串. 在公司产 ...

  5. [LintCode] Maximal Rectangle 最大矩形

    Given a 2D boolean matrix filled with False and True, find the largest rectangle containing all True ...

  6. wamp下多域名配置

    1.找到wamp安装目录的apache安装目录 找到 httpd.conf文件 例如我安装的目录为 E:\wamp\bin\apache\apache2.2.8\conf\httpd.conf 也可以 ...

  7. linux笔记五-------编辑器

    1. 三种模式    命令(默认).尾行.编辑模式 2. 尾行模式    :    :q      退出vi编辑器    :w      保存修改    :wq     保存并退出编辑    :q!  ...

  8. zju(9)LCD显示实验

    1.实验目的 1.学习和掌握linux下对IIC的操作方法以及驱动和应用程序的编写: 二.实验内容 1.编写EduKit-IV实验箱Linux操作系统下IIC的驱动,并编写应用程序实现将数据写入EEP ...

  9. Xcode 移除(卸载)插件

    1.command + shift + G ,输入 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins 2.在Plug-ins文 ...

  10. 四则运算之C++实现篇

    对四则运算的一些要求如下: 1.题目避免重复:2.可定制(数量/打印方式):3.可以控制下列参数:   是否有乘除法.数值范围.加减有无负数.除法有无余数.否支持分数 (真分数, 假分数, …): 一 ...