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

使用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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容