背景
在一次查看日志排查其他问题时,偶然发现有一个redisUtil.hasKey的空指针异常。思索一番按道理调用时参数key是不可能为空的,那么这个异常究竟是从何而来。
查看
找到相应的代码,发现idea也有提示:
Unboxing of 'redisTemplate.hasKey(key)' may produce 'NullPointerException'
'redisTemplate.hasKey(key)'的拆箱可能会产生 'NullPointerException'
看下redisTemplete的hasKey()方法源码
调用的是connection.exists() 点进去继续看
原来是exists方法可能会返回null,且返回的是包装类型Boolean,而项目中是用boolean基础类型接收的,所以会提示拆箱可能会报空指针异常。
那么很明显日志中的空指针异常就是在某次exists方法返回null产生的。
解决
稍微改造一下RedisUtil.hasKey()方法的写法即可解决。