抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

摘要:本文学习了Spring表达式语言的使用方法。

环境

Windows 10 企业版 LTSC 21H2
Java 1.8
Tomcat 8.5.50
Maven 3.6.3
Spring 5.2.25.RELEASE

1 概念

Spring表达式语言(Spring Expression Language,简称SpEL)是Spring框架中的一种强大表达式语言,允许开发者在运行时查询和操作对象。

主要特点:

  • 支持丰富的表达式语法,包括属性访问、方法调用、运算符等
  • 能够在运行时动态计算和操作对象
  • 与Spring的依赖注入和配置机制紧密集成
  • 可以在XML配置和注解中使用

2 语法基础

2.1 字面量表达式

支持各种类型的字面量表达式:

xml
1
2
3
4
5
<!-- 创建User对象 -->
<bean id="user" class="com.example.bean.User">
<property name="id" value="#{1}"/>
<property name="name" value="#{'张三'}"/>
</bean>

2.2 属性访问

支持访问对象的属性:

xml
1
2
3
4
5
6
7
8
9
<!-- 创建Address对象 -->
<bean id="address" class="com.example.bean.Address">
<property name="detail" value="北京市海淀区"/>
</bean>

<!-- 创建User对象 -->
<bean id="user" class="com.example.bean.User">
<property name="home" value="#{address.detail}"/>
</bean>

2.3 方法调用

3.3.1 普通方法

支持调用对象的普通方法:

xml
1
2
3
4
<!-- 创建User对象 -->
<bean id="user" class="com.example.bean.User">
<property name="nameLength" value="#{'张三'.length()}"/>
</bean>

3.3.2 静态方法

支持调用对象的静态方法:

xml
1
2
3
4
<!-- 创建User对象 -->
<bean id="user" class="com.example.bean.User">
<property name="age" value="#{T(java.lang.Integer).valueOf('18')}"/>
</bean>

2.4 运算符

支持各种运算符:

xml
1
2
3
4
<!-- 创建User对象 -->
<bean id="user" class="com.example.bean.User">
<property name="home" value="#{'北京市' + '海淀区'}"/>
</bean>

2.5 配置文件

支持从配置文件中读取配置:

xml
1
2
3
4
5
6
7
<!-- 属性文件 -->
<context:property-placeholder location="classpath:user.properties"/>

<!-- 创建User对象 -->
<bean id="user" class="com.example.bean.User">
<property name="name" value="${zs.name}"/>
</bean>

3 使用方式

3.1 XML配置

在XML配置中使用:

xml
1
2
3
4
5
<!-- 创建User对象 -->
<bean id="user" class="com.example.bean.User">
<property name="id" value="#{1}"/>
<property name="name" value="#{'张三'}"/>
</bean>

3.2 注解配置

在注解配置中使用,通常配合@Value注解:

java
1
2
3
4
@Value("1")
private Integer id;
@Value("张三")
private String name;

3.3 编程方式

在代码中直接使用:

java
1
2
3
4
5
6
7
8
public static void main(String[] args) {
// 创建表达式解析器
ExpressionParser parser = new SpelExpressionParser();
// 解析简单表达式
String expression = "1 + 1";
int result = parser.parseExpression(expression).getValue(Integer.class);
System.out.println(result);
}

评论