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

本文介绍了Spring表达式语言(SpEL)的基本概念及其在Spring框架中的应用实例。通过具体的Car和Person类演示了如何使用SpEL进行动态赋值、方法调用及属性引用等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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表达:

<bean name ="car" class="com.fei.HelloOne.Car">
<property name="pinpai" value="#{'byd'}"></property>
<!-- 我们试下SpEL -->
<property name="price" value="#{23333}"></property>
</bean>
<!-- 配置person 使用SqEL-->
<bean name="person" class="com.fei.HelloOne.Person">
<property name="name" value="#{'菲菲'}"></property>
<property name="car" value="#{car}"></property>
<!-- SqEL表达式 -->
<property name="say" value="#{car.price > 20000 ? '太贵了':'很不错,挺便宜的'}"></property>
</bean>

这里我们队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,所以选的第一个表达式。

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值