spring 中spel 的用法

  1. spel :spring表达式语言 简称(spel)是一个支持运行时查询和操作对象图的强大表达式语言
  2. 语法类似el :spel使用 #{...}作为定界符,所有在大括号中的字符都将被认为是spel
  3. spel 为bean的属性进行动态赋值提供了便利

    通过spel可以实现

a.通过bean‘的id对bean进行引用

b.调用方法以及引用对象中的属性

c.计算表达式的值

d.正则表达式的匹配

下面做个小测试

4. 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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="applic" class="com.spring.entity.applic">
		<property name="address" value="北京"></property>
		<property name="age" value="14"></property>
		<property name="name" value="王府"></property>
		<property name="sex" value="F"></property>
	</bean>

	<bean id="spel" class="com.spring.entity.Spel">
		<property name="price" value="#{33}"></property>
		<!-- 使用spel引用其他的 bean  -->
		<property name="applic" value="#{applic}"></property>
		<!-- 引用其他bean的属性 -->
		<property name="name" value="#{applic.name}"></property>
		<!-- 引用其他bean的方法 -->
		<property name="addr" value="#{applic.te()}"></property>
	</bean>
</beans>

5.applic 实体

package com.spring.entity;

public class applic {

	private String name;
	private String address;
	private Integer age;
	private String sex;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	@Override
	public String toString() {
		return "applic [name=" + name + ", address=" + address + ", age=" + age + ", sex=" + sex + "]";
	}
	public applic(String name, String address, Integer age, String sex) {
		super();
		this.name = name;
		this.address = address;
		this.age = age;
		this.sex = sex;
	}
	public applic() {
		super();
	}

	public void te(){
		System.out.println("我是applic的te()方法!!!");
	}
}

6.spel 实体

package com.spring.entity;

public class Spel {

	private String name;
	private String addr;
	private String price;
	private applic applic;

	public applic getApplic() {
		return applic;
	}

	public void setApplic(applic applic) {
		this.applic = applic;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	public String getPrice() {
		return price;
	}

	public void setPrice(String price) {
		this.price = price;
	}

	public Spel(String name, String addr, String price, com.spring.entity.applic applic) {
		super();
		this.name = name;
		this.addr = addr;
		this.price = price;
		this.applic = applic;
	}

	public Spel() {
		super();
	}

	@Override
	public String toString() {
		return "Spel [name=" + name + ", addr=" + addr + ", price=" + price + ", applic=" + applic + "]";
	}

}

7.测试

package com.spring.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.spring.entity.Spel;

public class TestSpel {
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("spel.xml");
		Spel spel = (Spel)ctx.getBean("spel");
		System.out.println(spel);

	}
}

测试结果:

我是applic的te()方法!!!

Spel [name=王府, addr=null, price=33, applic=applic [name=王府, address=北京, age=14, sex=F]]

时间: 2024-10-21 12:52:22

spring 中spel 的用法的相关文章

Spring中@Cacheable的用法

在Spring中通过获取MemCachedClient来实现与memcached服务器进行数据读取的方式.不过,在实际开发中,我们往往是通过Spring的@Cacheable来实现数据的缓存的,所以,本文给大家详细介绍一下@Cacheable的用法.首先,在使用@Cacheable之前,我们要做好准备工作. 第一步:要导入相应的jar包.   <classpathentry kind="lib" path="lib/spring-core-4.1.4.RELEASE.j

Spring中HibernateCallback的用法(转)

Hibernate的复杂用法HibernateCallback HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式.HibernateTemplate的灵活访问方式是通过如下两个方法完成: q      Object execute(HibernateCallback action) q      List execute(HibernateCallback action) 这两个方法都需要一个HibernateCallb

Spring中jdbcTemplate的用法实例

一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作.通常情况下,有三种种方式得到JdbcTemplate 对象.       第一种方式:我们可以在自己定义的DAO 实现类中注入一个DataSource 引用来完 成JdbcTemplate 的实例化.也就是它是从外部"注入" DataSource 到DAO 中,然后 自己实例化JdbcTemplate,然后将DataSource 设置到JdbcTemplate 对象中.       第二种

spring 中StoredProcedure的用法--转载

StoredProcedure是一个抽象类,必须写一个子类来继承它,这个类是用来简化JDBCTemplate执行存储过程操作的. 首先我们写一个实现类: package com.huaye.framework.dao; import java.sql.Types; import java.util.HashMap; import java.util.Map; import org.springframework.jdbc.core.RowMapper; import org.springfram

Spring中ApplicationContextAware的用法

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt379 一.这个接口有什么用? 当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean.换句话说,就是这个类可以直接获取spring配置文件中,所有有引用到的bean对象. 二.怎么用? 举个例子吧: 例如我有一个方法类AppUtil,这个方法类中需要使用到的Application

Spring 中classPath:用法

参考文章地址: http://hi.baidu.com/huahua035/item/ac8a27a994b55bad29ce9d39 http://blog.csdn.net/lushuaiyin/article/details/6880640 http://jeiofw.blog.51cto.com/3319919/934413 classpath就是代表  /WEB-INF /classes/  这个路径(如果不理解该路径,就把一个web工程发布为war包,然后用winrar查看其包内路径

spring中spEL常用应用场景

spEL表达式表示:#{} 一.基本类型值运算操作 {}可以放置数字,字符串,布尔型,表达式(运算,正则,逻辑).这个应用场景和EL表达式一样的,实际中用的也不多. 注意:在XML中表示==,>,<,>=,<=,必须使用eq,gt,lt,ge,le代替 使用三目运算符,如#{user.name != null ? user.name:'liming'},类似这种表达式可以简化写成#{user.name ?:'liming'},只有在判断是否为空值时才能使用这种简化写法哦. 二.引用

spring 中 @import的用法

第一步: 新建Java工程    FirstSpringJAVA 第二步:导入相关的spring jar包 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.1.RELEASE</version> </dependency> <dependency

spring中autowire的用法

Autowire模式就是在spring的声明文件里用作进行对象间的关联关系自动绑定的,就是在spring beanfactory内的一个bean对其bean的引用可以自动进行,而不一定用ref=的方式显式声明.在reference的3.3.6节有详细的介绍,autowire主要有5种模式: 1 no 不使用Autowire,引用关系显示声明,spring的reference也建议不用autoware,因为这会破坏模块关系的可读性,原文如下: Note: as has already been m