Spring中的SpEL表达式

说明

SpEL (Spring Expression Language) 是 Spring 框架中用于在运行时对对象图进行查询和操作的表达式语言。它可以在不引入 Java 代码的情况下,轻松地对对象进行值的计算、属性的读取、调用方法、访问数组和集合等。SpEL广泛应用于Spring框架的许多模块中,比如Spring MVC、Spring Data、Spring Integration等。

SpEL 语言支持以下功能:

  1. 访问对象的属性和方法,例如 @{user.name} 或 @{user.getName()};
  2. 计算简单或复杂的数学表达式,例如 @{2 + 3 * 4};
  3. 访问集合和数组的元素,例如 @{numbers[0]} 或 @{userList[0].name};
  4. 对字符串进行操作,例如拼接字符串、格式化等,例如 @{ 'Hello, ' + user.name};
  5. 进行逻辑判断和条件判断,例如 @{user.age > 18 ? '成年人' : '未成年人'};
  6. 调用静态方法,例如 @{T(java.lang.Math).random()};
  7. 使用正则表达式进行匹配,例如 @{user.name matches '^[A-Z][a-zA-Z]*$'};
  8. 创建新的对象和集合,例如 @{new java.util.ArrayList()}。

SpEL语言的表达式可以在注解、XML配置文件、Spring集成测试环境等地方使用。它提供了丰富的功能和语法,非常灵活和强大,方便在运行时对对象进行动态操作和计算。

@Value使用

bash 复制代码
# 配置
accessModes=1,2,3
java 复制代码
	@Value("#{'${accessModes}'.empty ? null : '${accessModes}'.split(',')}")
    private List<String> accessModes = new ArrayList<>();

    @GetMapping("/accessModes")
    public String accessModes() {
        return Arrays.toString(accessModes.toArray(new String[accessModes.size()]));
    }

On the other hand

In the world of Spring, there exists a powerful language known as SpEL. It is like a magical tool for the Spring developers, allowing them to tap into the deepest depths of their applications and manipulate them in ways previously thought impossible.

Imagine a spaceship hurtling through the vast expanse of space. With SpEL, the developers can navigate this ship through asteroid fields and around black holes with ease. They can even program the ship to automatically detect and avoid danger, ensuring the safety of the crew.

But SpEL is not just limited to space travel. It can be used to create complex systems that would make even the most advanced civilizations envious. From virtual reality simulations to time-travel machines, nothing is beyond the reach of SpEL.

Of course, with great power comes great responsibility. A single mistake in the SpEL code could bring about catastrophic consequences, such as opening a wormhole to an alternate universe or causing a planet to implode.

But for the skilled Spring developer, SpEL is a tool to be wielded with precision and care, unlocking the full potential of their applications and pushing the limits of what is possible in the world of technology.

相关推荐
盖世英雄酱581364 分钟前
格式化成日期为什么提前一天呢,同样的时间点还是非必现???
java·后端
威哥爱编程5 分钟前
【AI全栈12-05】Spring Boot 用 Tool Calling 让 AI 查实时订单与库存
java·spring boot·后端
Guarding and trust5 分钟前
项目拆解(二):模型输出是‘野‘的——三层兜底+重分析,把AI变成可靠零件
java·人工智能·python·大模型·fastapi·ollama·错误兜底
春风霓裳9 分钟前
0xc0000005 = 内存访问违规
java
威哥爱编程12 分钟前
【AI全栈12-06】Spring Boot 用 RAG 搭企业私有知识库问答
java·spring boot·后端
迅猛龙办公室15 分钟前
Python实现获取星期字符串
java·前端·python
小蒜学长15 分钟前
基于微信小程序的医院医疗废弃物追溯管理系统(代码+数据库+LW)
java·spring boot·后端·微信小程序·医疗废弃物
troy12818 分钟前
Java Web 常见面试题(2026 最新整理)
java·前端·hive
开开心心就好20 分钟前
一元二次方程求解工具,答案带详细步骤
java·服务器·开发语言·算法·pdf·ocr·perl
cc57250265321 分钟前
2027校招:大数据管理与应用专业做数据治理,技术之外还要准备什么?
java·开发语言