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.

相关推荐
hello早上好几秒前
JDK 代理原理
java·spring boot·spring
PanZonghui5 分钟前
Centos项目部署之Java安装与配置
java·linux
沉着的码农36 分钟前
【设计模式】基于责任链模式的参数校验
java·spring boot·分布式
Mr_Xuhhh1 小时前
信号与槽的总结
java·开发语言·数据库·c++·qt·系统架构
何苏三月1 小时前
SpringCloud系列 - Sentinel 服务保护(四)
spring·spring cloud·sentinel
纳兰青华1 小时前
bean注入的过程中,Property of ‘java.util.ArrayList‘ type cannot be injected by ‘List‘
java·开发语言·spring·list
coding and coffee1 小时前
狂神说 - Mybatis 学习笔记 --下
java·后端·mybatis
千楼1 小时前
阿里巴巴Java开发手册(1.3.0)
java·代码规范
reiraoy1 小时前
缓存解决方案
java
安之若素^2 小时前
启用不安全的HTTP方法
java·开发语言