关于缓存对象远程调用无数据时返回值的疑问

Blade 未结 1 99
tongyi
tongyi 剑侠 2024-10-17 14:24

一、该问题的重现步骤是什么?

1.  租户Id不存在,CacheUtil.get 方法获取了一个全空字段的对象


2. feign 返回的数据结构

===============  Response Start  ================
===Result===  {"code":200,"success":true,"data":null,"msg":"暂无承载数据"}
<=== GET: /feign/client/system/tenant-id (54 ms)
===============   Response End   ================


3. 实际获取的的数据结构

R(code=200, success=true, data=Tenant(tenantId=null, tenantCode=null, tenantName=null, domainUrl=null, backgroundUrl=null, linkman=null, contactNumber=null, address=null, accountNumber=null, expireTime=null, packageIds=null, datasourceId=null, licenseKey=null), msg=暂无承载数据)


二、你期待的结果是什么?实际看到的又是什么?


返回: 

R(code=200, success=true, data=null, msg=暂无承载数据)


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

4.1.0

四、请提供详细的错误堆栈信息,这很重要。


java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.springblade.system.pojo.entity.Tenant.getStatus()" is null
	at org.springblade.system.cache.SysCache.lambda$getTenant$19(SysCache.java:368)
	at org.springblade.core.cache.utils.CacheUtil.get(CacheUtil.java:222)
	at org.springblade.system.cache.SysCache.getTenant(SysCache.java:365)
	at org.springblade.system.service.impl.UserServiceImpl.submit(UserServiceImpl.java:98)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)

五、若有更多详细信息,请在下面提供。

image.png

1条回答
  • 2024-10-17 14:55

    因为feign底层是http客户端,调用完毕后会进行json序列化。如果返回的数据为空,进行对象序列化的时候也会对类进行反序列化,最后返回全空的对象。

    后续我们优化一下,进行非空判断的时候加入对应逻辑

    0 讨论(0)
提交回复