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.

相关推荐
阿维的博客日记8 分钟前
MultipartFile 是不是表示仅仅是一个分片?
java·后端·spring·multipartfile
程序员无隅22 分钟前
Coding Agent 为什么压缩上下文后还能继续工作?上下文模块设计拆解
java·开发语言·数据库
Python+9932 分钟前
Java 枚举类(Enum)详解:从基础到高级应用
java·开发语言·python
二炮手亮子1 小时前
浅记java线程池
java·开发语言
一路向北North1 小时前
Spring Security OAuth2.0(23):分布式系统授权-转发明文给微服务
java·spring·微服务
爱吃牛肉的大老虎3 小时前
rust基础之环境搭建
java·开发语言·rust
tellmewhoisi4 小时前
多版本共用redis的token有效期校验(过期重新登录)
java·redis·缓存
疯狂打码的少年4 小时前
【软件工程】结构化设计:模块独立性与耦合内聚
java·开发语言·笔记·软件工程
乐观的Terry4 小时前
3、数据库设计与领域实体
java·数据库·spring boot·spring cloud·ai编程
C++、Java和Python的菜鸟5 小时前
第4章 后端Web基础(基础知识)
java·开发语言