摘要:本文学习了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 字面量表达式
支持各种类型的字面量表达式:
xml1 2 3 4 5
| <bean id="user" class="com.example.bean.User"> <property name="id" value="#{1}"/> <property name="name" value="#{'张三'}"/> </bean>
|
2.2 属性访问
支持访问对象的属性:
xml1 2 3 4 5 6 7 8 9
| <bean id="address" class="com.example.bean.Address"> <property name="detail" value="北京市海淀区"/> </bean>
<bean id="user" class="com.example.bean.User"> <property name="home" value="#{address.detail}"/> </bean>
|
2.3 方法调用
3.3.1 普通方法
支持调用对象的普通方法:
xml1 2 3 4
| <bean id="user" class="com.example.bean.User"> <property name="nameLength" value="#{'张三'.length()}"/> </bean>
|
3.3.2 静态方法
支持调用对象的静态方法:
xml1 2 3 4
| <bean id="user" class="com.example.bean.User"> <property name="age" value="#{T(java.lang.Integer).valueOf('18')}"/> </bean>
|
2.4 运算符
支持各种运算符:
xml1 2 3 4
| <bean id="user" class="com.example.bean.User"> <property name="home" value="#{'北京市' + '海淀区'}"/> </bean>
|
2.5 配置文件
支持从配置文件中读取配置:
xml1 2 3 4 5 6 7
| <context:property-placeholder location="classpath:user.properties"/>
<bean id="user" class="com.example.bean.User"> <property name="name" value="${zs.name}"/> </bean>
|
3 使用方式
3.1 XML配置
在XML配置中使用:
xml1 2 3 4 5
| <bean id="user" class="com.example.bean.User"> <property name="id" value="#{1}"/> <property name="name" value="#{'张三'}"/> </bean>
|
3.2 注解配置
在注解配置中使用,通常配合@Value注解:
java1 2 3 4
| @Value("1") private Integer id; @Value("张三") private String name;
|
3.3 编程方式
在代码中直接使用:
java1 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); }
|
条