Java如何使用Spring EL进行数学运算?

我们知道,在Spring EL中可以表示的最简单的值是文字值,例如number。此外,我们还可以使用Spring EL进行数学运算。下面的spring配置向您展示了如何使用Spring Expression Language进行数学运算。这些操作包括:

  • 加法运算(+)

  • 减法运算(-)

  • 乘法运算(*)

  • 除法运算(/)

  • 模运算(%)

  • 幂运算(^)

<?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="myBean">
        <property name="total" value="#{50 + 50}"/>
        <property name="length" value="#{100 - 10}"/>
        <property name="size" value="#{10 * 10}"/>
        <property name="reminder" value="#{10 % 3}"/>
        <property name="distance" value="#{1000 / 10}"/>
        <property name="power" value="#{2 ^ 10}"/>
    </bean>

</beans>

上面的配置需要一个名为MyBean的bean / pojo。这是一个简单的类,其中包含一些字段以及getter和setter。随后是一个名为SpELMathOperationDemo的简单类,用于演示Spring EL数学运算。

package org.nhooo.example.spring.el;

public class MyBean {
    private int total;
    private int length;
    private int size;
    private float distance;
    private int reminder;
    private int power;

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getLength() {
        return length;
    }

    public void setLength(int length) {
        this.length = length;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public float getDistance() {
        return distance;
    }

    public void setDistance(float distance) {
        this.distance = distance;
    }

    public int getReminder() {
        return reminder;
    }

    public void setReminder(int reminder) {
        this.reminder = reminder;
    }

    public int getPower() {
        return power;
    }

    public void setPower(int power) {
        this.power = power;
    }
}
package org.nhooo.example.spring.el;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpELMathOperationDemo {
    public static void main(String[] args) {
        ApplicationContext context =
            new ClassPathXmlApplicationContext("spel-math-operation.xml");

        MyBean bean = (MyBean) context.getBean("myBean");
        System.out.println("bean.getTotal()    = " + bean.getTotal());
        System.out.println("bean.getLength()   = " + bean.getLength());
        System.out.println("bean.getSize()     = " + bean.getSize());
        System.out.println("bean.getReminder() = " + bean.getReminder());
        System.out.println("bean.getDistance() = " + bean.getDistance());
        System.out.println("bean.getPower()    = " + bean.getPower());
    }
}

这是由代码片段打印出来的输出:

bean.getTotal()    = 100
bean.getLength()   = 90
bean.getSize()     = 100
bean.getReminder() = 1
bean.getDistance() = 100.0
bean.getPower()    = 1024