Пример операторов Spring EL

Spring EL поддерживает большинство стандартных математических, логических или реляционных операторов. Например,

, Реляционные операторы - равно (==, eq), не равно (! =, Ne), меньше чем

(<, lt), меньше или равно (⇐, le), больше (>, gt) и больше или равно (> =, ge).

, Логические операторы - и, или, и не (!).

, Математические операторы - сложение (), вычитание (-),

Умножение (** ), деление (/), модуль (%) и экспоненциальная мощность (^).

Spring EL в аннотации

Этот пример демонстрирует использование операторов в 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;
    }

}

Запустить его

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

Выход

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 в XML

Смотрите эквивалентную версию в XML-файле определения компонента. В XML символ как
«**  меньше ** » всегда не поддерживается, вместо этого вы должны использовать текстовый
эквиваленты, показанные выше, например, ('**  <** ' = '**  lt ** ') и ('**  <= ** ' =
'**  Ле ** ').

<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"> <имя свойства = "testEqual" value = "# {1 == 1}"/> <имя свойства = "testNotEqual" value = "# {1! = 1} "/> <имя свойства =" testLessThan "value =" # {1 lt 1} "/> <имя свойства =" testLessThanOrEqual "value =" # {1 le 1} "/> <имя свойства = "testGreaterThan" value = "# {1> 1}"/> <имя свойства = "testGreaterThanOrEqual" value = "# {1> = 1}"/> <имя свойства = "testAnd" value = "# {numberBean. нет == 999 и numberBean.no lt 900} "/> <имя свойства =" testOr "value =" # {numberBean.no == 999 или numberBean.no lt 900} "/> <имя свойства =" testNot "значение = "# {! (numberBean.no == 999)}"/> <имя свойства = "testAdd" value = "# {1 1}"/> <имя свойства = "testAddString" value = "# {'1' '@' '1'} "/> <property name =" testSubtraction "value =" # {1 - 1} "/> <property name =" testMultiplication "value =" # {1 ** 1} "/> <property name = "testDivision" value = "# {10/2}"/> <свойство 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>

</Бобы>

=== Скачать исходный код

Загрузить -
ссылка://wp-content/uploads/2011/06/Spring3-EL-Operator-Example.zip[Spring3-EL-Operator-Example.zip](7 КБ)

=== Ссылка

, http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/expressions.html#d0e11931[Official
Spring EL операторы ссылки]
ссылка://tag/spring-el/[spring el]ссылка://tag/spring3/[spring3]