美文网首页
九、Spring 3.0 提供的表达式语言(SpEL)

九、Spring 3.0 提供的表达式语言(SpEL)

作者: 数独题 | 来源:发表于2017-03-05 15:59 被阅读33次

使用Expression接口进行表达式求值:

SpEL主要提供如下三个接口:

  • ExpressionParser:该接口负责解析一个SpEL表达式,返回一个Expression对象。
  • Expression:该接口实例代表一个表达式。
  • EvalutionContext:代表计算表达式值得上下文。

Expression实例代表一个表达式,它包含了如下方法用于计算,得到表达式的值:

  • Object getValue():计算表达式的值。
  • <T> T getValue(Class<T> desireResultType):计算表达式的值,而且尝试将该表达式的值当成desireResultType类型来处理。
  • Object getValue(EvaluationContext context):使用指定的EvaluationContext来计算表达式的值。
  • <T> T getValue(EvaluationContext context,Class<T> desireResultType):计算表达式的值,而且尝试将该表达式的值当成desireResultType类型来处理。
  • Object getValue(Object rootObject):以rootObject作为表达式的root对象来计算表达式的值。
  • <T> T getValue(Object rootObject,Class<T> desireResultType):以rootObject作为表达式的root对象来计算表达式的值。而且尝试将该表达式的值当成desireResultType类型来处理。

Bean定义中的表达式语言支持:

Author.java

public class Author implements Persion
{
    private Integer id;
    private String name;
    private List<String> books;
    .......省略所有的setter和getter方法.......

    public void useAxe(){
    System.out.println(axe.chop());
    }
}

beans.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
   
    
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-4.0.xsd" >
        
        
    <!--
    配置setName()的参数时,在表达式中调用方法
    配置setAxe()的参数时 ,在表达式中创建对象
    配置调用setBooks()的参数,在表达式中访问其他的Bean属性
     -->
     
     <bean id="author" class="entity.Author" p:name="#{T(java.lang.Math).random()}"
                                             p:axe="#{new entity.SteelAxe()"}
                                             p:books="#{{confTest.a,confTest.b}}"/>
</beans>

相关文章

网友评论

      本文标题:九、Spring 3.0 提供的表达式语言(SpEL)

      本文链接:https://www.haomeiwen.com/subject/izcegttx.html