You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Framework从6.0.14升级到6.1.6后SpEL表达式报错如何解决?

Spring 6.1.6升级后@Cacheable SpEL表达式空指针问题解决方法
  • 问题本质:Spring Framework 6.1版本对SpEL表达式的空值校验逻辑做了强化,当链式调用中某个对象为null时,直接调用后续方法会触发SpelEvaluationException;而6.0.14版本未做如此严格的校验,允许隐式跳过null对象的方法调用。

  • 核心解决方法:在SpEL的链式方法调用中使用安全导航操作符?.,它会自动判断前置对象是否为null,若为null则终止后续调用并返回null,避免抛出异常。修改后的注解代码如下:

@Cacheable(value = "Cache", 
    key = "(#request)?.getToken()?.hashCode()", 
    unless = "#result == null")
  • 进阶严谨处理:如果需要在#request为null时指定默认缓存key,可以使用三目运算符做显式判断:
@Cacheable(value = "Cache", 
    key = "#request != null ? #request.getToken().hashCode() : 'default-cache-key'", 
    unless = "#result == null")

内容的提问来源于stack exchange,提问作者Pankaj Verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:25:58