这一章节我们来讨论一下对SpEl的值的运算。

1.domain

烤炉类:(不变)

package com.raylee.my_new_spring.my_new_spring.ch01.topic_1_17;

public class Oven {
private String name = ""; private double size = 0; public double getSize() {
return size;
} public void setSize(double size) {
this.size = size;
} @Override
public String toString() {
return name + " size:" + size;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} }

厨师类:(为了方便,降低了friend的属性)

package com.raylee.my_new_spring.my_new_spring.ch01.topic_1_17;

public class Chief {

	private String name = "";

	private Oven oven;

	public String getName() {
return name;
} public Oven getOven() {
return oven;
} public void setName(String name) {
this.name = name;
} public void setOven(Oven oven) {
this.oven = oven;
} public void userOven() {
System.out.println(name + " use " + oven);
} }

2.測试类:(不变)

package com.raylee.my_new_spring.my_new_spring.ch01.topic_1_17;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"/com/raylee/my_new_spring/my_new_spring/ch01/topic_1_17/ApplicationContext-test.xml" })
public class ChiefTest { @Autowired
private ApplicationContext applicationContext; @Test
public void testChief() {
Chief jack = (Chief) applicationContext.getBean("jack");
jack.userOven();
Chief mike = (Chief) applicationContext.getBean("mike");
mike.userOven();
Chief rose = (Chief) applicationContext.getBean("rose");
rose.userOven();
}
}

3.配置文件:(重点)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="smallOven"
class="com.raylee.my_new_spring.my_new_spring.ch01.topic_1_17.Oven"
p:name="smallOven" p:size="#{2*3}" /> <bean id="midOven"
class="com.raylee.my_new_spring.my_new_spring.ch01.topic_1_17.Oven"
p:name="smallOven" p:size="#{T(java.lang.Math).PI*4}" /> <bean id="bigOven"
class="com.raylee.my_new_spring.my_new_spring.ch01.topic_1_17.Oven"
p:name="smallOven" p:size="#{smallOven.getSize()*4}" /> <bean id="mike"
class="com.raylee.my_new_spring.my_new_spring.ch01.topic_1_17.Chief"
p:name="mike">
<property name="oven" ref="smallOven" />
</bean> <bean id="jack"
class="com.raylee.my_new_spring.my_new_spring.ch01.topic_1_17.Chief"
p:name="jack">
<property name="oven" ref="midOven" />
</bean> <bean id="rose"
class="com.raylee.my_new_spring.my_new_spring.ch01.topic_1_17.Chief"
p:name="rose">
<property name="oven" ref="bigOven" />
</bean>
</beans>

配置文件的重点就是看Oven里面的size属性。在这里我们能够通过执行符来计算我们须要的值,直接对SpEl的值进行操作。

測试输出:

jack use smallOven size:12.566370614359172
mike use smallOven size:6.0
rose use smallOven size:24.0

我们上面仅仅是演示了乘法,它有:+ 加 - 减 * 乘 / 除 % 模 ^平方 这几种运算方式,大家后面能够逐一尝试。

总结:这一章节我们讨论了对SpEl的值的运算。

文件夹:http://blog.csdn.net/raylee2007/article/details/50611627

我的github:https://github.com/raylee2015/my_new_spring

从头认识Spring-1.15 对SpEl的值的操作(1)-数值运算的更多相关文章

  1. [原创]java WEB学习笔记100:Spring学习---Spring Bean配置:SpEL详细介绍及代码演示

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

  2. Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  3. spring注解@Value取不到值【转】

    spring注解@Value取不到值 今天在一个项目中发现一个情况,在Service中取不到name值,直接输出了{name}字符串,找了好久,最后在一篇文章中找到解决方案. 解决这个问题的一篇文章( ...

  4. Spring 获取propertise文件中的值

    Spring 获取propertise文件中的值 Spring 获取propertise的方式,除了之前的博文提到的使用@value的注解注入之外,还可以通过编码的方式获取,这里主要说的是要使用Emb ...

  5. Spring Boot项目指定启动后执行的操作

    Spring Boot项目指定启动后执行的操作: (1)实现CommandLineRunner 接口 (2)重写run方法 (3)声明执行顺序@Order(1),数值越小,优先级越高 (4)如果需要注 ...

  6. spring的15个经典面试题

    总结Spring框架的15个经典面试题. 什么是Spring框架? Spring是一种轻量级框架,旨在提高开发人员的开发效率以及系统的可维护性. 我们一般说的Spring框架就是Spring Fram ...

  7. Spring学习笔记--在SpEL中筛选集合

    要用到Spring的util(包括util:list等),xml文件中的beans中需要添加一些有关util的信息: <?xml version="1.0" encoding ...

  8. Spring表达式语言之SpEL

    •Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言. •语法类似于 EL:SpEL 使用 #{…} 作为定界符,所有在大框号中的字符都将被认为是 SpEL ...

  9. Spring IOC机制使用SpEL

    一.SpEL 1.1       简介 Spring Expression Language,Spring表达式语言,简称SpEL.支持运行时查询并可以操作对象图. 和JSP页面上的EL表达式.Str ...

随机推荐

  1. 解决win10下微信开发者工具点击错位问题

    在系统设置->显示->更改文本.应用等项目的大小选项中将百分比改为100%即可.

  2. Codeforces 938D Buy a Ticket (转化建图 + 最短路)

    题目链接  Buy a Ticket 题意   给定一个无向图.对于每个$i$ $\in$ $[1, n]$, 求$min\left\{2d(i,j) + a_{j}\right\}$ 建立超级源点$ ...

  3. 洛谷——P2368 EXCEEDED WARNING B

    P2368 EXCEEDED WARNING B 题目背景 SGU 107 题目描述 求有多少个平方后末尾为987654321的n位数 输入输出格式 输入格式: 整数n 输出格式: 答案,即[b]“平 ...

  4. log4j - 1

    具体内容: 1.       如何在项目中配置log4j使得该系统可以输出web test的日志文件(自定义格式)到工程dist目录下的junitLog/WebTestLog.log目录下,输出508 ...

  5. Oracle PL/SQL DBA 编程实践基础

    [附:一文一图]

  6. sql server 高可用故障转移(1)

    原文:sql server 高可用故障转移(1) 群集准备工作 个人电脑 内存12G,处理器 AMD A6-3650CPU主频2.6GHz 虚拟机 VMware Workstation 12 数据库  ...

  7. 【Mybatis】未封装返回结果的字段自己返回值的问题

    在spring boot中使用mybatis过程中,发现有个实体的时间字段未在mapper方法执行完的封装结果中进行封装,但是却有值返回. 如下展示问题: 实体如下: package com.sxd. ...

  8. 访问php程序无法解析,排查步骤

    1.安装lamp后,php程序没有被解析 (1) apachectl -M 看是否加载了libphp5.so ,apachectl -M 这个命令查看动态libphp5.so的是否由apache加载 ...

  9. django开发环境部署之pip、virtualenv、virtualenvwrapper

    step1:安装pip 在python中可以使用easy_install和pip安装python拓展但推荐使用pip Don't use easy_install, unless you like s ...

  10. object references an unsaved transient instance - save the transient instance before flushing异常问题处理

    一.异常:org.hibernate.TransientObjectException: object references an unsaved transient instance - save ...