`
cywhoyi
  • 浏览: 418220 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring Expression Language

阅读更多

接着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);
	}
}

 

0
2
分享到:
评论

相关推荐

    spring-expression-3.2.1.RELEASE.zip

    标题 "spring-expression-3.2.1.RELEASE.zip" 暗示了我们要讨论的是Spring Expression Language (SpEL) 的一个版本,这是Spring框架的一部分,主要用于在运行时评估表达式。SpEL允许开发者在应用程序中动态地访问和...

    spring-expression-3.2.3.release.jar.zip

    《Spring Expression Language (SpEL) 详解:深入理解与应用》 在Java世界里,Spring框架以其强大的功能和灵活性著称。Spring Expression Language(简称SpEL)是Spring框架中的一个核心组件,它提供了一种强大的...

    开发工具 spring-expression-4.3.6.RELEASE.rar

    《Spring Expression Language (SpEL) 深度解析与应用》 在IT行业中,Spring框架是Java企业级应用开发的基石,而Spring Expression Language(简称SpEL)则是Spring框架中的一个重要组成部分,它为Spring应用程序...

    org.springframework.expression-3.1.1.RELEASE.jar

    《Spring Expression Language (SpEL) 3.1.1.RELEASE 深度解析》 在Java开发领域,Spring框架以其强大的功能和灵活性备受推崇。其中,Spring Expression Language(简称SpEL)是Spring框架的一个重要组成部分,它为...

    spring-expression

    Spring Expression Language(简称SpEL)是Spring框架中的一个强大功能,它提供了一种在运行时查询和操作对象图的表达式语言。SpEL被设计用来在Spring应用程序中进行数据绑定、AOP切点匹配以及动态方法调用等任务。...

    初学Spring所需最基本的6个jar包(core、context、beans、expression、logging1.1.1、log4j-1.2.15)

    这个模块提供了强大的表达式语言(SpEL,Spring Expression Language),用于在运行时查询和操作对象图。SpEL支持属性访问、方法调用、算术运算、逻辑运算,以及条件和循环语句,可以在配置中动态地设置Bean属性或者...

    Spring 3.0-API 参考手册

    Spring 3.0中,新的表达式语言名叫Spring Expression Language(SpEL,直译就是Spring表达式语言)。Shaun将其描述为“嵌入在Spring编程模型上的,可以用来在Spring项目之间描述任务以及配置的微型脚本语言。SpEL...

    Spring中文文档下载

    此外,3.0还引入了Spring Expression Language (SpEL),这是一个强大的表达式语言,用于在运行时查询和操作对象图。同时,3.0版本加强了对AspectJ的集成,使得面向切面编程(AOP)更为简便。 `Spring2.5中文版.chm`...

    spring-expression.zip

    Spring Expression Language(简称 SpEL)是一个支持查询和操作运行时对象导航图功能的强大的表达式语言,它的语法类似于传统 EL(如jsp中的EL表达式),但提供额外的功能,最出色的就是函数调用和简单字符串的模板...

    SpringSecurity笔记2-SpringSecurity命名空间

    - 它还允许自定义权限表达式,例如,`&lt;expression-handler&gt;`元素可以配置自定义的Spring Expression Language (SpEL)表达式处理器,扩展Spring Security的默认行为。 3. **Spring Security与SpEL的集成**: - ...

    spring2.0升级到spring3.0.5的开发包

    6. **Spring Expression Language (SpEL)**:Spring 3.0引入了强大的表达式语言SpEL,可以在运行时查询和操作bean的属性,增强了依赖注入的灵活性。 7. **AspectJ集成加强**:Spring 3.0进一步强化了与AspectJ的...

    官方原版源码spring-framework-5.1.8.RELEASE.zip

    10. **Spring Expression Language (SpEL)**:Spring表达式语言是Spring框架内的一种强大表达式语言,用于运行时查询和操作对象图。 通过深入研究这些关键知识点,开发者不仅能了解Spring Framework的内部工作原理...

    spring-framework-官方参考文档

    9. **Spring Expression Language (SpEL)** SpEL是Spring框架内的表达式语言,用于运行时查询和操作对象图。 10. **Spring Security** 提供了一套完整的安全解决方案,包括认证、授权和加密,保障应用程序的安全...

    Spring框架相关jar包

    4. **Spring-expression (Spring-expr)**: Spring Expression Language(SpEL)是Spring框架中的表达式语言,它允许在运行时查询和操作对象图。SpEL可以用于评估表达式,获取属性值,调用方法,创建新对象,执行逻辑...

    spring jar包.zip

    Spring框架由多个模块组成,其中包括Spring Core、Spring Context、Spring Beans、Spring AOP和Spring Expression Language(SpEL)等。这些模块协同工作,为开发者提供了全面的解决方案。 1. **Spring Core**:这...

    spring_security_3.1

    3.1版引入了表达式语言(Expression-Based Access Control),允许使用SpEL(Spring Expression Language)进行细粒度的访问控制。 3. **过滤器链**:Spring Security的核心是过滤器链,它拦截HTTP请求并执行安全...

Global site tag (gtag.js) - Google Analytics