org.springframework.expression.spel.SpelEvaluationException: EL1030E

2023-05-16

问题与分析

在本地开发项目时发现报错如下:

org.springframework.expression.spel.SpelEvaluationException: EL1030E: The operator 'ADD' is not supported between objects of type 'java.lang.String' and 'null'
    at org.springframework.expression.spel.ExpressionState.operate(ExpressionState.java:240)
    at org.springframework.expression.spel.ast.OpPlus.getValueInternal(OpPlus.java:80)
    at org.springframework.expression.spel.ast.OpPlus.getValueInternal(OpPlus.java:85)
    at org.springframework.expression.spel.ast.OpPlus.getValueInternal(OpPlus.java:83)
    at org.springframework.expression.spel.ast.OpPlus.getValueInternal(OpPlus.java:83)
    at org.springframework.expression.spel.ast.OpPlus.getValueInternal(OpPlus.java:83)
    at org.springframework.expression.spel.ast.OpPlus.getValueInternal(OpPlus.java:83)
    at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:109)
    at org.springframework.expression.spel.standard.SpelExpression.getValue
....
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

从堆栈信息可以看出,该异常与spel有关。spel指的是Spring Expression Language,结合问题代码进行分析,可以认为该异常与spring表达式有关。而在我的代码里,只有@Cacheable注解里使用到了spel,如下:

    @Cacheable(key = "#root.target.getCacheKeyPrefix() + '::' + + #root.target.getRootDomain() + '-' + #root.target.getLocale() + '-' + #searchLabelKey")
    public String getFromRootDomain(final String labelId, final String locale, final String searchLabelKey) {
        
        // TODO
        return null;
    }

很显然,在使用到该注解时,由于这里的spring表达式有问题,最终在解析时抛出了异常。经过检查发现,这里犯了个很逗的错误,就是连续使用了两个+,导致解析无法通过,改正后如下:

@Cacheable(key = "#root.target.getCacheKeyPrefix() + '::' + #root.target.getRootDomain() + '-' + #root.target.getLocale() + '-' + #searchLabelKey")

而之所以之前没能发现这个问题,是因为没有启用redis cache,导致避开了这个问题。目前刚开始了解spel这门表达式语言,在此记录下这个问题,方便日后回顾分析,下面顺便贴上官方的一篇中译文档。

参考链接

  • 8. Spring 表达式语言 (SpEL)

转载于:https://www.cnblogs.com/yulinlewis/p/11633091.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

org.springframework.expression.spel.SpelEvaluationException: EL1030E 的相关文章

随机推荐

  • Mac OS X 完全卸载MySQL

    执行下列命令 sudo rm usr local mysqlsudo rm rf usr local mysql sudo rm rf Library StartupItems MySQLCOMsudo rm rf Library Pref
  • 揭秘微信红包:架构、抢红包算法、高并发和降级方案

    编者按 与传统意义上的红包相比 xff0c 近两年火起来的 红包 xff0c 似乎才是如今春节的一大重头戏 历经上千年时代传承与变迁 xff0c 春节发红包早已成为历史沉淀的文化习俗 xff0c 融入了民族的血脉 按照各家公布的数据 xff
  • iOS 富文本所有的NSAttributedStringKey

    NSAttributedStringKey xff1a 1 NSFontAttributeName 字体 xff0c value是UIFont对象 2 NSParagraphStyleAttributeName 绘图的风格 xff08 居中
  • android抓取logcat日志的方法

    这几天帮忙测试一个APP xff0c 报告结果需要提交日志文件 xff0c 于是百度了下安卓的获取日志方法 xff0c 其实很简单 xff0c 7个步骤搞定 xff0c 下面把我的总结分享给大家 1 下载adb工具包 https pan b
  • 如何获得大学教材的PDF版本?

    最近急需一本算法书的配套答案 xff0c 这本配套单独出售 xff0c 好像在市面上还买不到 xff0c 在淘宝上搜索也只是上一个版本 xff0c 并没有最新版本 xff0c 让我很无奈 加上平时肯定会有这么一种情况 xff0c 想看一些书
  • 创新的力量

    创新是个非常好的词 xff0c 虽然这个词已经被用滥了 xff0c 但我依然固执的认为这是一个充满了迷人光辉的词汇 如果把创新放入科技领域 xff0c 这应该是我在科技领域最喜欢的一个词了 我常常对同事或团队的成员说 xff0c 我们在做产
  • mysql连接池

    文章出处 https www cnblogs com wupeiqi articles 8184686 html DBUtils是Python的一个用于实现数据库连接池的模块 此连接池有两种连接模式 xff1a 模式一 xff1a 为每个线
  • Python操作MySQL

    文章出处 https www cnblogs com wupeiqi articles 5713330 html 本篇对于Python操作MySQL主要使用两种方式 xff1a 原生模块 pymsqlORM框架 SQLAchemy pyms
  • 免费的天气API

    高德地图 的提供了免费查看天气预报API xff08 https lbs amap com api webservice guide api weatherinfo xff09 xff0c 每日限制调100000次 xff1b 1 和风天气
  • final link failed: Nonrepresentable section on output

    编译live555的时候遇到了这个问题 xff0c 前面的编译没有问题 xff0c 是在链接的时候出现的 xff0c 在网上搜索说是缺少 libstdc 43 43 库 于是 xff0c 安装之 sudo apt get install l
  • centos执行apt-get提示不存在

    在centos下用yum install xxx yum和apt get的区别 一般来说著名的linux系统基本上分两大类 xff1a 1 RedHat系列 xff1a Redhat Centos Fedora等 2 Debian系列 xf
  • C语言用指针实现两个数组值互换

    C语言用指针实现两数组的值互换 span class hljs preprocessor include lt stdio h gt span span class hljs preprocessor define N 10 span sp
  • onclick或者其他事件在部分移动端无效的问题

    最近开发碰到一个问题 xff0c 大多数手机都可以正常访问点击 xff0c 但是有部分手机onclick无效 xff0c 不知道可能是什么原因 xff1f 该如何解决 我遇到的这个问题 xff0c 实际不是onclick的原因 xff0c
  • Linux软件的安装和卸载

    Linux软件的安装和卸载一直是困扰许多新用户的难题 在Windows中 xff0c 我们可以使用软件自带的安装卸载程序或在控制面板中的 添加 删除程序 来实现 与其相类似 xff0c 在Linux下有一个功能强大的软件安装卸载工具 xff
  • 凝思linux系统显卡设置,TaiShan服务器安装凝思操作系统Linx6.0.90并设置独立显卡WX2100输出...

    TaiShan服务器安装凝思操作系统Linx6 0 90并设置独立显卡WX2100输出 环境准备 xff1a TaiShan 2280服务器 xff0c 凝思操作系统Linx6 0 90 arm64 xff0c WX2100显卡 xff0c
  • 华为TaiShan 2280 ARM 服务器

    华为TaiShan 2280 ARM 服务器 华为TaiShan 2280 ARM 服务器 https e huawei com cn products cloud computing dc servers arm based taisha
  • InfoQ推荐语:我的梦想

    大家好 非常高兴能在这一期的架构师和大家见面 本人工作了十余载 先后在洪恩软件和用友集团任职 目前任职于用友集团瑞友科技研究院 主要关注领域 企业应用软件平台研发 领域驱动设计 OSGi 动态语言应 用 云计算 移动互联和Mac OS平台相
  • python TKinter的主窗口运行程序完毕后,怎么让其自动关闭

    如题 xff1a 在pycharm 调试Tkinter程序的时候 xff0c 关闭右上角的X 实际上并未退出进程 xff0c 长期以往 再大的内存也会被耗尽 一般就是下面的代码 xff1a 34 34 34 from tkinter imp
  • Httpclient文件上传

    public static void upload String url File file String filename CloseableHttpClient httpclient 61 HttpClients createDefau
  • org.springframework.expression.spel.SpelEvaluationException: EL1030E

    问题与分析 在本地开发项目时发现报错如下 xff1a code org springframework expression spel SpelEvaluationException EL1030E The operator 39 ADD