• 从头认识Spring-1.15 对SpEl的值的操作(1)-数值运算


    这一章节我们来讨论一下对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


  • 相关阅读:
    储存过程与触发器
    session 和 cookie
    (四)Jira工作流状态的属性
    (三)Jira scriptrunner插件
    (二)JIRA安装
    vs2015 调试无法访问网站的问题
    设计模式
    依赖倒置、反射、泛型、委托、AOP
    C# .NET
    持续集成
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7255940.html
Copyright © 2020-2023  润新知