Spring Bean Expression Language(EL)

1, Add dependency.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${spring.version}</version>
</dependency>

  

2. Test Cases

import org.junit.Test;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.SpelCompilerMode;
import org.springframework.expression.spel.SpelParserConfiguration;
import org.springframework.expression.spel.standard.SpelExpression;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;

public class SpringELTest {

    @Test
    public void testEvaluationContext() {

    Account account = new Account("Deniro");
    ExpressionParser parser = new SpelExpressionParser();
    EvaluationContext context = new StandardEvaluationContext(account);
    Expression expression = parser.parseExpression("name");
    String result = expression.getValue(context, String.class);
    System.out.println("result:" + result);

    }

    @Test
    public void test1() {
    ExpressionParser parser = new SpelExpressionParser();
    Expression expression = parser.parseExpression("‘SpEL‘.concat(‘ thinking‘)");
    String result = (String) expression.getValue();
    System.out.println("result:" + result);
    }

    @Test
    public void test2() {
    ExpressionParser parser = new SpelExpressionParser();
    Expression expression = parser.parseExpression("6+2");
    Integer result = (Integer) expression.getValue();
    System.out.println("result:" + result);
    }

    @Test
    public void test3() {

    // Spel 解析配置器
    SpelParserConfiguration configuration = new SpelParserConfiguration(SpelCompilerMode.IMMEDIATE, SpringELTest.class.getClassLoader());

    // 解析器
    SpelExpressionParser parser = new SpelExpressionParser(configuration);

    // 上下文
    EvaluationContext context = new StandardEvaluationContext(new Account("Deniro"));

    // 表达式
    String expression = "getName()";

    // 解析表达式
    SpelExpression spelExpression = parser.parseRaw(expression);

    System.out.println(spelExpression.getValue(context));
    }

}
public class Account {

    private String name;

    public Account(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

 

import java.util.ArrayList;
import java.util.List;

import org.springframework.expression.EvaluationException;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.ParseException;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;

public class GenericConvertExample {
public List<Integer> nums = new ArrayList<Integer>();

public static void main(String[] args) {

GenericConvertExample example = new GenericConvertExample();
example.nums.add(1);

//创建表达式上下文
StandardEvaluationContext context = new StandardEvaluationContext(example);
//创建表达式解析器
ExpressionParser parser = new SpelExpressionParser();

String expression = "nums[0]";
//自动将 2 转换为 Integer 类型
parser.parseExpression(expression).setValue(context, 2);
System.out.println("nums:" + example.nums);

//抛出 ConverterNotFoundException
try {
parser.parseExpression(expression).setValue(context, true);
} catch (EvaluationException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}

}
}

 

原文地址:https://www.cnblogs.com/hcoding/p/spel.html

时间: 2024-10-15 02:00:42

Spring Bean Expression Language(EL)的相关文章

【Head First Servlets and JSP】笔记23:Expression Language(EL) 完全攻略

基本上是<Head First Servlets and JSP>内容的整理.扩充.顺便推荐一个供参考的JSP教程:JSP Tutorial内容很全面,还有一些有趣的实例. 完整代码参考 EL隐式对象汇总 pageContext使用参考 EL表达式的基本规则 关于EL的一些细节 通过EL获得request参数 从request得到更多信息 获得Request Method? xxxxScope有意义吗? 通过EL调用函数 EL与数学运算 1.EL隐式对象汇总.如下所示: 更详细的内容可以参考 

Spring文档苦读【7】【Spring Expression Language(SpEL)】

简介 Spring Expression Language(Spring表达式语言),用来解析java语言中的相关并获得反馈. 下面就摘录官方示例来简单描述一下.也作一下标记,方便以后查阅. 示例 示例1 1 ExpressionParser parser = new SpelExpressionParser(); 2 Expression exp = parser.parseExpression("'Hello World'"); 3 String message = (String

EL(expression language)

EL(expression language) 默默的看雨下 简介 EL(表达式语言)可以方便访问Web常用对象的数据.在JSP2开始默认支持,可以避免使用jsp脚本语言,如<%=%> 作用 获取数据 执行运算 获取Web常用对象 调用java方法 使用 1.EL语法:${expression} 如 ${user} 2.EL提供 . 与 [ ] 两种方式来获取数据.如 ${user.name} 3.EL内置对象: pageContext --- 代表该JSP的pageContext对象. pa

EL(Expression Language)和JSTL标签(JSP Standard Tag Library)

一.EL表达式: Expression Language提供了在 JSP 脚本编制元素范围外(例如:脚本标签)使用运行时表达式的功能.脚本编制元素是指页面中能够用于在JSP 文件中嵌入 Java代码的元素.它们通常用于对象操作以及执行那些影响所生成内容的计算 1)语法结构 ${expression} 2)[]与.运算符 EL 提供.和[]两种运算符来存取数据. 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []. 例如:${user.My-Name}应当改为

EL(Expression Language)

EL(Expression Language) 简介 默认对象 运算符 变量 EL还提供自动转变类型的功能,eg:${param.count+20},会将传来的count自动转换为数值. 原文地址:https://www.cnblogs.com/huangzefeng/p/9261004.html

Spring Bean管理

IOC容器 工厂只负责创建对象,而Spring当然不仅仅是一个对象工厂;其核心是一个对象容器,由于具备控制反转的能力,所以也叫它IOC容器; 容器可以理解为存放对象的地方,当然不仅仅是存储,还有对象的管理,包括-创建-销毁-装配; 这样原本程序要做的事情交给了Spring,所以这属于IOC,称之为IOC容器; Spring有两个容器接口ApplicationContext是BeanFactory的子接口.它们都可以作为Spring的容器; 两种容器的区别: BeanFactory采取的懒加载的方

Expression Language

EL找不到属性会返回"" page –-  request --- session --- application ------------------------------- 通过EL获得java对象类型 ${pageScope.person.name}  ==pageContext.getAttribute("person").getName(); ${pageScope.person.age} EL操作List ${pageScope.list[1]} 取第

spring bean中的properties元素内的ref和value的区别;* 和 ** 的区别

spring bean中的properties元素内的ref和value的区别 至于使用哪个是依据你所用的属性类型决定的. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property na

Java EE Expression Language

什么是EL? 形如这样(立即执行的): ${sessionScope.cart.total} 或者这样(延迟执行的): #{customer.name} 的表达式语言(Expression Language). EL有什么用? 读写数据,调用方法,简单的运算.总之就像很基本的表达式,可以写在JSP/HTML/CSS/JS文件里(这有确实有点方便的). <script type="text/javascript" lang="javascript"> va