Spring学习记录(四)Spring表达式语言:SpEL

Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言。
语法类似于 EL:SpEL 使用 #{…} 作为定界符,所有在大框号中的字符都将被认为是 SpEL
SpEL 为 bean 的属性进行动态赋值提供了便利
通过 SpEL 可以实现:
通过 bean 的 id 对 bean 进行引用
调用方法以及引用对象中的属性
计算表达式的值

正则表达式的匹配

下面我们来看一个例子:

还是我们的Car类:

package com.fei.HelloOne;

public class Car {

	private String pinpai;
	private Double price;
	
	
	public void Car(String pinpai,Double price) {
		this.pinpai=pinpai;
		this.price = price;
	}
	public void Car() {
		
	}
	public String getPinpai() {
		return pinpai;
	}
	public void setPinpai(String pinpai) {
		this.pinpai = pinpai;
	}
	public Double getPrice() {
		return price;
	}
	public void setPrice(Double price) {
		this.price = price;
	}
	@Override
	public String toString() {
		return "Car [pinpai=" + pinpai + ", price=" + price + "]";
	}
	
}

然后是Person类:

package com.fei.HelloOne;

public class Person {
	private String name;
	private Car car;
	private String say;
	public String getSay() {
		return say;
	}
	public void setSay(String say) {
		this.say = say;
	}
	
	@Override
	public String toString() {
		return "Person [name=" + name + ", car=" + car + ", say=" + say + "]";
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Car getCar() {
		return car;
	}
	public void setCar(Car car) {
		this.car = car;
	}

}

然后我们看配置,使用SqEL表达:











这里我们队say赋值的时候做了一个判断,就是car的price是否大于20000,如果大于就赋值第一个表达式,否则赋值第二个表达式。

我们在main函数试下:

                ApplicationContext ac =new ClassPathXmlApplicationContext("applicationContext.xml");
		Person person = (Person)ac.getBean("person");
		System.out.println(person);

结果:

Person [name=菲菲, car=Car [pinpai=byd, price=23333.0], say=太贵了]

做判断了,因为这里我们引用了car的price,大于20000,所以选的第一个表达式。

这里我们赋值用的也是#{}的形式。



你可能感兴趣的:(JAVA,JAVA框架,Spring,java,spring)