【SpringBoot系列】Spring EL表达式的简介和快速入门

news2024/11/30 4:56:46

介绍

Sping EL(Spring Expression Language 简称 SpEL)是一种强大的表达式语言,支持在运行时查询和操作对象,它可以与 XML 或基于注解的 Spring 配置一起使用。语言语法类似于统一 EL,但提供了额外的功能,方法调用字符串模板功能。

虽然还有其他几种可用的 Java 表达式语言,OGNL、MVEL 和 JBoss EL等,但创建 Spring 表达式语言是为了向 Spring 社区提供一种受良好支持的表达式语言,SpEL基于与技术无关的 API,允许在需要时集成其他表达式语言实现。

使用

获取属性值

@Value("${cls.name}")
private String name;

@Value("#{${cls.name}}")
private String aName;

关系运算符和逻辑运算符

    @Value("#{3 gt 2 && 2 le 2 and 1 < -1}")
    private boolean flag;

正则运算符

    @Value("#{'100' matches '\\d+' }") // true
    private boolean numberFlag;

静态方法

    @Value("random number is #{T(java.lang.Math).random()}")
    private String temp;

访问 Spring Bean

    @Autowired
    private ApplicationContext applicationContext;

    @GetMapping("/t2")
    public void t2() {
        SpelExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext context = new StandardEvaluationContext();
        context.setBeanResolver(new BeanFactoryResolver(applicationContext));
        Car car = parser.parseExpression("@car").getValue(context, Car.class);
        System.out.println("car : " + car);

        String result = parser.parseExpression("@car.getName()").getValue(context, String.class);
        System.out.println("return result : " + result);
    }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/572186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot+vue藏区特产销售平台(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的藏区特产销售平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…

产品经理如何使用集简云实现工作流程自动化?

场景描述 作为一名产品经理&#xff0c;需要每天面对来自各个部门的需求&#xff0c;平时的工作内容更是复杂繁琐&#xff0c;画流程图、产品开发周期、产品描述、设计团队协作&#xff0c;新产品培训会、用户需求会&#xff0c;或跟进 bug 修复等等等等…… 对内不仅要参与业…

STM32与ESP32下载器设计

文章目录 背景STM32下载器使用现成的DAPlink选择自制DAPlink ESP32/ESP8266下载器连接接口STM32接口ESP32接口 背景 我们常用的单片机主要有STM32和ESP32&#xff0c;其中STM32下载要求SWD下载接口&#xff0c;ESP32下载要求串口&#xff0c;但需要控制ESP32 IO0和EN口高低电平…

前端人必须掌握的抓包技能(原理到实践)

目录 1. 前言 2. 抓包的原理 2.1 什么是抓包&#xff1f; 2.2 HTTP/HTTPS 抓包原理 2.2.1 HTTP 抓包原理 2.2.2 HTTPS 抓包原理 2.3 电脑如何抓手机的包 3. 抓包工具 whistle 3.1 whistle 是什么 如何快速使用 whistle 3.2 whistle 可以做的事情 4. whistle 实战案…

HP打印机网络连接扫描仪失败

财务反映,使用主机上的HP LaserJet Pro M329-HP Scan连接扫描仪提示失败。 测试果然失败,提示如下图: 点击修复后,提示 需要安装HP Print and Scan Doctor。 同意安装,并启动HP Print and Scan Doctor 点击开始,其开始搜索,过程有点慢。 第一次发现其连接错误,居然…

液晶显示常用概念

文章目录 数字液晶显示消隐区水平&#xff08;行&#xff09;消隐 HBlank垂直&#xff08;场&#xff09;消隐 VBlank RGB格式RGB555RGB565RGB888 VGA驱动原理时钟信号像素时钟同步信号DE信号&#xff08;有效数据选通信号&#xff09;DE信号与其他信号的关系 数字液晶显示消隐…

golang webhook源码和案例配合gitee实践

下载golang webhook源码和案例&#xff1a; https://download.csdn.net/download/qq_32421489/87824180 解压后go mod tidy下载依赖包 修改打包环境为Linux&#xff1a; go env -w GOOSlinux 打包命令&#xff1a;go build 打包后的可运行程序上传服务器后&#xff1a;参…

用本地连接集群进行压力测试,让你的测试更快更有效!

目录 引言 背景 详细步骤 1、首先打开终端 2、安装kubectl 3、配置kubeconfig 4.准备本地仓库文件 5.启动集群执行脚本 总结 引言 测试是软件开发中至关重要的一环&#xff0c;但长时间的等待和低效率的测试却常常让人感到烦躁。现在&#xff0c;我们推出了全新的解决…

真的裂开了呀,现在的00后,真是卷死了

谁说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。这不&#xff0c;上个月我们公司来了个00后&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪22K&#xff0c;都快接近我了。 后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 …

7个简单步骤创建企业邮箱教程

创建企业邮箱电子邮件地址有几种不同的方法&#xff0c;可以使用电子邮件服务提供商&#xff0c;也可以使用电子邮件托管服务。由于Zoho Mail是世界上最受欢迎的电子邮件服务提供商之一&#xff0c;提供非常简单的帐户设置、大量功能和有竞争力的价格&#xff0c;我们将以它为例…

【敲敲云】免费的零代码产品 — 应用创建与设置

敲敲云可以创建不同的应用&#xff0c;每一个应用我们可以看做一个系统&#xff0c;例如销售系统、财务系统等等。下面我们来看看如何创建应用吧。 应用的基础操作&#xff1a; 应用的基础操作包含创建应用、修改应用、退出/删除应用、排序应用、维护应用、应用回收站 1、新建…

提前进入行业顶尖阵营:高性能计算实习的竞争优势

如今就业越来越内卷&#xff0c;尤其是计算机行业更是如此。加上GPT以及大模型的加持&#xff0c;各大企业纷纷降本增效&#xff0c;普通程序员逐渐失去竞争力。想要在竞争激烈的就业市场中脱颖而出&#xff0c;提前进入行业顶尖阵营是一个明智的选择。而高性能计算实习将为您提…

js中获取对象属性值(对象.属性和对象[属性]的区别)

一、在JavaScript中可以通过两种方式访问对象属性 (1)可以使用“ . ”来访问对象的属性。 (2)可以使用“ [ ] ”来访问对象的属性。 二、对象.属性和对象[属性]的区别&#xff1a; 1.相同点&#xff1a; &#xff08;1&#xff09;都可以获取对象的属性值&#xff1b; 2.不同…

C Primer Plus第七章编程练习答案

学完C语言之后&#xff0c;我就去阅读《C Primer Plus》这本经典的C语言书籍&#xff0c;对每一章的编程练习题都做了相关的解答&#xff0c;仅仅代表着我个人的解答思路&#xff0c;如有错误&#xff0c;请各位大佬帮忙点出&#xff01; 1.编写一个程序读取输入&#xff0c;读…

PID算法在流量控制中的应用

目录 增量式或位置式 目录 增量式或位置式 PID控制周期 T1 时间 T2 约4ms PID C代码 最近有小伙伴向我提问关于PID的问题&#xff1a;通过比例阀控制水流速度&#xff08;流量&#xff09;&#xff0c; 使用增量式还是位置式 PID&#xff1f;他的比例法驱动频率是500Hz…

Windows http https的搭建

目录 搭建http站点 ​编辑 报错 网站端口更改 可能存在的报错 绑定主机名 端口为80的情况下 绑定的端口不为80的情况下 https站点搭建 CA机构证书可以给其他服务器使用&#xff0c;不过要用导出导入的行书&#xff0c;不能直接使用cer文件 搭建http站点 ①勾选IIS ②一…

windows下nginx+tomcat配置负载均衡的方法

在负载均衡方面&#xff0c;Nginx和Tomcat的实现方式略有不同。Nginx作为反向代理服务器&#xff0c;可以直接处理并分发请求到后端服务器&#xff0c;包括Tomcat。它可以使用不同的负载均衡算法来分发请求&#xff0c;将负载均衡的任务集中在Nginx上。而Tomcat通常通过与Apach…

RL Note 1, Basic Concepts in Reinforcement Learning

Basic Concepts in Reinforcement Learning A grid-world example 在该图中&#xff1a; 格子被分为三类&#xff1a;可访问的格子、禁止访问的格子、目标格子角色被称为 agentagent 的任务就是从 start 开始找到一条“正确”的路径到达 targetagent 无法越过边界&#xff0c…

创建多线程常用的三种方式

三种常用多线程实现方式 1. 继承Thread类 继承Thread线程类并且重写run方法无线程任务返回值 2. 实现Runnable接口 实现Runnable接口并且重写run方法无线程任务返回值 3. 实现Callable接口和通过Futrue接口实现类(FutrueTask) 实现Callable接口(泛型数据类型对应call方法的返回…

(2020,DA)用于数据高效 GAN 训练的可鉴别数据增强(Differentiable Augmentation)

Differentiable augmentation for data-efficient gan training 公众号&#xff1a;EDPJ 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 3.1 重温数据增强 3.2 GAN 的可鉴别增强 4. 实验 4.1 ImageNet 4.2 FFHQ 和 LSUN-Cat 4.3 CIFAR-10 和 CIFAR-100 4.4 low-sho…