接着http://ray-yui.iteye.com/blog/1944582的火热,兄弟也来一把,关于
Spring Expression Language
主要是告诉大家如何通过annotion以及XML的方式进行EL表达方式的解析,同样也会告诉大家如何通过ExpressionParser
接口类实现对于EL表达式的解析。
工程采用标准的MAVEN,在附件中有提供代码
接下来的例子是把Book类以及其它成员变量注入到Author类
package com.javacodegeeks.snippets.enterprise; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component("authorBean") public class Author { @Value("沈志华") private String name; @Value("#{bookBean}") private Book book; @Value("#{bookBean.title}") private String bookTitle; @Value("#{bookBean.getBookInfo('沈志华')}") private String fullAuthorInfo; public String getName() { return name; } public void setName(String name) { this.name = name; } public Book getBook() { return book; } public void setBook(Book book) { this.book = book; } public String getBookTitle() { return bookTitle; } public void setBookTitle(String bookTitle) { this.bookTitle = bookTitle; } public String getFullAuthorInfo() { return fullAuthorInfo; } public void setFullAuthorInfo(String fullAuthorInfo) { this.fullAuthorInfo = fullAuthorInfo; } @Override public String toString(){ return name + " has writen the book : " + book + ". \n" + bookTitle + " is a wonderful title of a wonderful book."; } }
package com.javacodegeeks.snippets.enterprise; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component("bookBean") public class Book { @Value("12345") private long id; @Value("朝鲜战争揭秘") private String title; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getBookInfo(String authorName){ return authorName + " has writen the book " + title + ", with book id " + ""+ id + "."; } @Override public String toString(){ return title; } }
在使用annotion配置文件需要声明
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd"> <context:component-scan base-package="com.javacodegeeks.snippets.enterprise" /> </beans>
当然之前博主已经讲了很多EL表达式使用,比较全集
那么如果我们自己也要造轮子,为何不采用ExpressionParser的API,接下来就演示下具体的操作过程
package com.javacodegeeks.snippets.enterprise; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; public class ExpressionParserApp { public static void main(String[] args) { ExpressionParser parser = new SpelExpressionParser(); //literal expressions Expression exp = parser.parseExpression("'Hello World'"); String msg1 = exp.getValue(String.class); System.out.println(msg1); //method invocation Expression exp2 = parser.parseExpression("'Hello World'.length()"); int msg2 = (Integer) exp2.getValue(); System.out.println(msg2); //Mathematical operators Expression exp3 = parser.parseExpression("100 * 2"); int msg3 = (Integer) exp3.getValue(); System.out.println(msg3); //create an test object Test test = new Test(); //test EL with test object StandardEvaluationContext testContext = new StandardEvaluationContext(test); //display the value of test.email property Expression exp4 = parser.parseExpression("email"); String msg4 = exp4.getValue(testContext, String.class); System.out.println(msg4); //test if test.email == 'Hello@javacodegeeks.com' Expression exp5 = parser.parseExpression("email == 'Hello@javacodegeeks.com'"); boolean msg5 = exp5.getValue(testContext, Boolean.class); System.out.println(msg5); } }
相关推荐
标题 "spring-expression-3.2.1.RELEASE.zip" 暗示了我们要讨论的是Spring Expression Language (SpEL) 的一个版本,这是Spring框架的一部分,主要用于在运行时评估表达式。SpEL允许开发者在应用程序中动态地访问和...
《Spring Expression Language (SpEL) 详解:深入理解与应用》 在Java世界里,Spring框架以其强大的功能和灵活性著称。Spring Expression Language(简称SpEL)是Spring框架中的一个核心组件,它提供了一种强大的...
《Spring Expression Language (SpEL) 深度解析与应用》 在IT行业中,Spring框架是Java企业级应用开发的基石,而Spring Expression Language(简称SpEL)则是Spring框架中的一个重要组成部分,它为Spring应用程序...
《Spring Expression Language (SpEL) 3.1.1.RELEASE 深度解析》 在Java开发领域,Spring框架以其强大的功能和灵活性备受推崇。其中,Spring Expression Language(简称SpEL)是Spring框架的一个重要组成部分,它为...
Spring Expression Language(简称SpEL)是Spring框架中的一个强大功能,它提供了一种在运行时查询和操作对象图的表达式语言。SpEL被设计用来在Spring应用程序中进行数据绑定、AOP切点匹配以及动态方法调用等任务。...
这个模块提供了强大的表达式语言(SpEL,Spring Expression Language),用于在运行时查询和操作对象图。SpEL支持属性访问、方法调用、算术运算、逻辑运算,以及条件和循环语句,可以在配置中动态地设置Bean属性或者...
Spring 3.0中,新的表达式语言名叫Spring Expression Language(SpEL,直译就是Spring表达式语言)。Shaun将其描述为“嵌入在Spring编程模型上的,可以用来在Spring项目之间描述任务以及配置的微型脚本语言。SpEL...
此外,3.0还引入了Spring Expression Language (SpEL),这是一个强大的表达式语言,用于在运行时查询和操作对象图。同时,3.0版本加强了对AspectJ的集成,使得面向切面编程(AOP)更为简便。 `Spring2.5中文版.chm`...
5. **工具和支持**:这部分包括Spring Expression Language (SpEL) 和Spring Test模块。SpEL是Spring的表达式语言,用于在运行时查询和操作对象图。Spring Test模块提供了对单元测试和集成测试的支持。 6. **4.3.16...
Spring Expression Language(简称 SpEL)是一个支持查询和操作运行时对象导航图功能的强大的表达式语言,它的语法类似于传统 EL(如jsp中的EL表达式),但提供额外的功能,最出色的就是函数调用和简单字符串的模板...
- 它还允许自定义权限表达式,例如,`<expression-handler>`元素可以配置自定义的Spring Expression Language (SpEL)表达式处理器,扩展Spring Security的默认行为。 3. **Spring Security与SpEL的集成**: - ...
6. **Spring Expression Language (SpEL)**:Spring 3.0引入了强大的表达式语言SpEL,可以在运行时查询和操作bean的属性,增强了依赖注入的灵活性。 7. **AspectJ集成加强**:Spring 3.0进一步强化了与AspectJ的...
10. **Spring Expression Language (SpEL)**:Spring表达式语言是Spring框架内的一种强大表达式语言,用于运行时查询和操作对象图。 通过深入研究这些关键知识点,开发者不仅能了解Spring Framework的内部工作原理...
9. **Spring Expression Language (SpEL)** SpEL是Spring框架内的表达式语言,用于运行时查询和操作对象图。 10. **Spring Security** 提供了一套完整的安全解决方案,包括认证、授权和加密,保障应用程序的安全...
4. **Spring-expression (Spring-expr)**: Spring Expression Language(SpEL)是Spring框架中的表达式语言,它允许在运行时查询和操作对象图。SpEL可以用于评估表达式,获取属性值,调用方法,创建新对象,执行逻辑...
Spring框架由多个模块组成,其中包括Spring Core、Spring Context、Spring Beans、Spring AOP和Spring Expression Language(SpEL)等。这些模块协同工作,为开发者提供了全面的解决方案。 1. **Spring Core**:这...