Spring-SpEL

本文介绍了Spring表达式语言(SpEL)的基本概念及其使用方法,包括如何创建解析器、解析表达式、构造上下文及求值等。同时,还展示了在Bean定义中使用SpEL的具体实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”
SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可以单独使用。
支持SpEL的Jar包:“org.springframework.expression-3.0.5.RELEASE.jar”

例子:
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;

@Test
    public void helloworld(){
// 解析器
        ExpressionParser parser = new SpelExpressionParser();
// 解析表达式
        Expression expression = parser.parseExpression("('Hello' + ' World').concat(#end)");
// 上下文环境
        EvaluationContext context = new StandardEvaluationContext();
        context.setVariable("end", "!");
        Assert.assertEquals("Hello World!", expression.getValue(context));
    }

代码分析:
1)创建解析器:SpEL使用ExpressionParser接口表示解析器,提供SpelExpressionParser默认实现;
2)解析表达式:使用ExpressionParser的parseExpression来解析相应的表达式为Expression对象。
3)构造上下文:准备比如变量定义等等表达式需要的上下文数据。
4)求值:通过Expression接口的getValue方法根据上下文获得表达式值。

这里写图片描述

bean定义中使用SpEL

    例子:
    <bean id="address" class="com.spring.beans.SpEL.Address"
    p:city="#{'beijing'}" p:street="wudaokou"></bean>

    <bean id="car" class="com.spring.beans.SpEL.Car" 
    p:brand="aodi" p:price="280000" p:typePerimeter="#{T(java.lang.Math).PI * 80}"></bean>

    <bean id="person" class="com.spring.beans.SpEL.Person"
    p:car="#{car}" p:city="#{address.city}" p:name="lisi"
    p:info="#{car.price>300000 ? '金领':'白领'}"></bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值