qiujiayu / AutoLoadCache

AutoLoadCache 是基于AOP+Annotation等技术实现的高效的缓存管理解决方案,实现缓存与业务逻辑的解耦,并增加异步刷新及“拿来主义机制”,以适应高并发环境下的使用。
Apache License 2.0
2.09k stars 698 forks source link

magic模式下,获取缓存key存在NPE #97

Open DR-YangLong opened 4 years ago

DR-YangLong commented 4 years ago

场景描述: 使用magic模式进行返回列表分割缓存存储,当返回值中含有NULL时,引发NPE 使用代码: @LocalCache(expire = 500) @Cache(expire = 600, expireExpression = "null == #retVal ? 30: 600", key = "", magic = @Magic(key = "'user-magic-'+ #retVal.userId"), autoload = true) @Override public List<UserInfo> loadAllUsers() { return LongStream.rangeClosed(1, 105).mapToObj(this::createUser).collect(Collectors.toList()); } 发生错误源代码: AbstractScriptParser#getDefinedCacheKey SpringELParser#getElValue 原因:未对返回值做null判断,返回值列表中有有NULL,出现错误

qiujiayu commented 4 years ago

欢迎提PR。