com.google.common.cache.CacheLoader$InvalidCacheLoadException: CacheLoader returned null for key word. at com.google.common.cache.LocalCache$Segment.getAndRecordStats(LocalCache.java:2287) ... 从异常描述能看出,不允许返回null,这一块之前倒是没怎么注意,因此对于null的情况,要么定义一个标记表示不存在,...
不过需要注意一点的是,CacheLoader不允许返回的数据为NULL,否则会抛出异常:CacheLoader returned null for key。所以我们需要保证查找的数据必须存在,或者抛出异常外部处理。在某些情况下,我们的数据可能确实不在,比如用户管理模块,我们在新增数据前,要查询原来是否已经存在该用户,那么这时候抛出异常也不合适,此时可以使用O...
System.out.println(stringCache.get("hello"));// invalidate不会触发loadstringCache.invalidate("hello");// invalidate后,再次get,触发load,抛出异常:// com.google.common.cache.CacheLoader$InvalidCacheLoadException: CacheLoader returned null for key hello.System.out.println(stringCache.get("hello")); }...
I. 常见使用姿势 @Testpublic void testGuava() {LoadingCache<String, String> cache = CacheBuilder.newBuilder().build(new CacheLoader<String, String>() {@Overridepublic String load(String key) throws Exception {if ("hello".equals(key)) {return "word";}return null;}});String word = cache.g...
分析问题,由于使用了refreshAfterWrite的功能,如果key取出来为空则会报错,这个功能一个重要的工作就是在2次获取同一个key时,且key到了该refresh的时间,就会后台异步刷新,如果刷新这个key得到了新值,就会覆盖key对应的旧值;如果获取到的key为null,不知道是该刷新还是有异常 解决问题 可以捕获 CacheLoader$InvalidCache...
.build(new CacheLoader<String, String>() { @Override public String load(String s) throws Exception { System.out.println("xx"); if (s.equals("hello")) return "world"; else return null; } }); try { System.out.println(stringCache.get("hello")); ...
CacheLoader类的load方法就是在key找不到的情况下,进行数据自动加载的 Cache常用参数 下面我们看一下Guava Cache在使用时常用的属性,下面的属性对Cache和LoadingCache都适用 1、容量初始化 publicvoidinitialCapacityTest(){Cache<String,String>cache=CacheBuilder.newBuilder().initialCapacity(1024)//初始容量.build();}...
4.CacheLoader中异步加载的实现 4.1 检查入参loader和executor不能为null 4.2 调用loader.load(), 根据key加载值,load方法需要我们自己实现 当调用LoadingCache的get方法时,如果缓存不存在对应key的记录,则CacheLoader的load方法会被自动调用从外存加载数据,load方法的返回值会作为key对应的value存储到LoadingCache中,并从...
测试的时候发现项目中的LoadingCache没有刷新,但是明明调用了refresh方法了。后来发现LoadingCache是不支持缓存null值的,如果load回调方法返回null,则在ge...
Guava Cache是Google开源的一个缓存库,它提供了一种简单且高效的方式来缓存数据,以加快应用程序的性能。在Guava Cache中,CacheLoader是一个核心组件,用于在缓存中查找或加载数据。本文将深入探讨Guava Cache的实现原理,重点分析CacheLoader的工作机制,并结合实际项目中的应用场景进行说明。