zoukankan      html  css  js  c++  java
  • Spring EL Operators example

    Spring EL supports most of the standard mathematical, logical or relational operators. For example,

    • Relational operators – equal (==, eq), not equal (!=, ne), less than (<, lt), less than or equal (<= , le), greater than (>, gt), and greater than or equal (>=, ge).
    • Logical operators – and, or, and not (!).
    • Mathematical operators – addition (+), Subtraction (-), Multiplication (*), division (/), modulus (%) and exponential power (^).

    Spring EL in Annotation

    This example demonstrates the use of operators in SpEL.

    package com.mkyong.core;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    @Component("customerBean")
    public class Customer {
    
    	//Relational operators
    	
    	@Value("#{1 == 1}") //true
    	private boolean testEqual;
    	
    	@Value("#{1 != 1}") //false
    	private boolean testNotEqual;
    	
    	@Value("#{1 < 1}") //false
    	private boolean testLessThan;
    	
    	@Value("#{1 <= 1}") //true
    	private boolean testLessThanOrEqual;
    	
    	@Value("#{1 > 1}") //false
    	private boolean testGreaterThan;
    	
    	@Value("#{1 >= 1}") //true
    	private boolean testGreaterThanOrEqual;
    
    	//Logical operators , numberBean.no == 999
    	
    	@Value("#{numberBean.no == 999 and numberBean.no < 900}") //false
    	private boolean testAnd;
    	
    	@Value("#{numberBean.no == 999 or numberBean.no < 900}") //true
    	private boolean testOr;
    	
    	@Value("#{!(numberBean.no == 999)}") //false
    	private boolean testNot;
    
    	//Mathematical operators
    	
    	@Value("#{1 + 1}") //2.0
    	private double testAdd;
    	
    	@Value("#{'1' + '@' + '1'}") //1@1
    	private String testAddString;
    	
    	@Value("#{1 - 1}") //0.0
    	private double testSubtraction;
    
    	@Value("#{1 * 1}") //1.0
    	private double testMultiplication;
    	
     	@Value("#{10 / 2}") //5.0
    	private double testDivision;
    	
    	@Value("#{10 % 10}") //0.0
    	private double testModulus ;
    	
    	@Value("#{2 ^ 2}") //4.0
    	private double testExponentialPower;
    
    	@Override
    	public String toString() {
    		return "Customer [testEqual=" + testEqual + ", testNotEqual="
    				+ testNotEqual + ", testLessThan=" + testLessThan
    				+ ", testLessThanOrEqual=" + testLessThanOrEqual
    				+ ", testGreaterThan=" + testGreaterThan
    				+ ", testGreaterThanOrEqual=" + testGreaterThanOrEqual
    				+ ", testAnd=" + testAnd + ", testOr=" + testOr + ", testNot="
    				+ testNot + ", testAdd=" + testAdd + ", testAddString="
    				+ testAddString + ", testSubtraction=" + testSubtraction
    				+ ", testMultiplication=" + testMultiplication
    				+ ", testDivision=" + testDivision + ", testModulus="
    				+ testModulus + ", testExponentialPower="
    				+ testExponentialPower + "]";
    	}
    	
    }
    
    package com.mkyong.core;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    @Component("numberBean")
    public class Number {
    
    	@Value("999")
    	private int no;
    
    	public int getNo() {
    		return no;
    	}
    
    	public void setNo(int no) {
    		this.no = no;
    	}
    
    }
    

    Run it

           Customer obj = (Customer) context.getBean("customerBean");
           System.out.println(obj);
    

    Output

    Customer [
    	testEqual=true, 
    	testNotEqual=false, 
    	testLessThan=false, 
    	testLessThanOrEqual=true, 
    	testGreaterThan=false, 
    	testGreaterThanOrEqual=true, 
    	testAnd=false, 
    	testOr=true, 
    	testNot=false, 
    	testAdd=2.0, 
    	testAddString=1@1, 
    	testSubtraction=0.0, 
    	testMultiplication=1.0, 
    	testDivision=5.0, 
    	testModulus=0.0, 
    	testExponentialPower=4.0
    ]
    

    Spring EL in XML

    See equivalent version in bean definition XML file. In XML, symbol like "less than" is always not support, instead, you should use the textual equivalents shown above, for example, ('<' = 'lt') and ('<=' = 'le').

    <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-3.0.xsd">
    
    	<bean id="customerBean" class="com.mkyong.core.Customer">
    	
    	  <property name="testEqual" value="#{1 == 1}" />
    	  <property name="testNotEqual" value="#{1 != 1}" />
    	  <property name="testLessThan" value="#{1 lt 1}" />
    	  <property name="testLessThanOrEqual" value="#{1 le 1}" />
    	  <property name="testGreaterThan" value="#{1 > 1}" />
    	  <property name="testGreaterThanOrEqual" value="#{1 >= 1}" />
    		
    	  <property name="testAnd" value="#{numberBean.no == 999 and numberBean.no lt 900}" />
    	  <property name="testOr" value="#{numberBean.no == 999 or numberBean.no lt 900}" />
    	  <property name="testNot" value="#{!(numberBean.no == 999)}" />
    		
    	  <property name="testAdd" value="#{1 + 1}" />
    	  <property name="testAddString" value="#{'1' + '@' + '1'}" />
    	  <property name="testSubtraction" value="#{1 - 1}" />
    	  <property name="testMultiplication" value="#{1 * 1}" />
    	  <property name="testDivision" value="#{10 / 2}" />
    	  <property name="testModulus" value="#{10 % 10}" />
    	  <property name="testExponentialPower" value="#{2 ^ 2}" />
    		
    	</bean>
    	
    	<bean id="numberBean" class="com.mkyong.core.Number">
    		<property name="no" value="999" />
    	</bean>
    
    </beans>
    
  • 相关阅读:
    vue、vuex、iview、vue-router报错集锦与爬坑记录
    iview框架select默认选择一个option的值
    datetimerangepicker配置及默认时间段展示
    windows下nvm安装node之后npm命令找不到问题解决办法
    The difference between the request time and the current time is too large.阿里云oss上传图片报错
    html5 移动适配写法
    JS判断设备类型跳转至PC端或移动端相应页面
    vue2.0生命周期好文章推荐
    vue如何正确销毁当前组件的scroll事件?
    Apache Shiro 反序列化RCE漏洞
  • 原文地址:https://www.cnblogs.com/ghgyj/p/4749591.html
Copyright © 2011-2022 走看看