1、在pom.xml中添加依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
2、demo
@Component
public class GuavaCache {
public LoadingCache<String, String > cache = CacheBuilder.newBuilder()
//设置缓存初始大小,应该合理设置,后续会扩容
.initialCapacity(10)
//最大值
.maximumSize(100)
//并发数设置
.concurrencyLevel(5)
//缓存过期时间,写入后100秒过期
.expireAfterWrite(100, TimeUnit.SECONDS)
// 此缓存对象经过多少秒没有被访问则过期。
.expireAfterAccess(10, TimeUnit.SECONDS)
//统计缓存命中率
.recordStats()
.build(new CacheLoader<String, String>() {
@Override
public String load(String key) throws Exception {
return "测试1:value:"+key;//当缓存中没有记录时,加载对应的值并返回
}
});
@PostConstruct
public void init(){
cache.put("2","李四");
}
public String get(String key) throws ExecutionException {
return cache.get(key);
}
}
Controller类:
@RestController
@RequestMapping("/test")
public class TestController {
@Resource
private GuavaCache guavaCache;
@RequestMapping("/hello")
public String test(String name) throws ExecutionException {
return guavaCache.get(name);
}
}
3、测试
由于在init方法上加了@PostConstruct注解,在spring容器初始化时,会执行此方法,向cache中put(2,李四),当key没过期时get,会得到inti的值。
当key过期后,缓存中没有这个值,加载对应的值(load方法里的return)并返回
key未过期:

当缓存中的key过期后:

LoadingCache:当缓存中不存在某个key的值时,可以通过CacheLoader的load方法来加载该key对应的值,并将其加入到缓存中。
文章介绍了如何在Java应用中使用GuavaCache进行缓存管理,包括在pom.xml中添加依赖,创建LoadingCache实例,配置缓存过期策略,并在Spring环境中使用@PostConstruct初始化缓存,以及通过CacheLoader的load方法加载缓存值。
3428

被折叠的 条评论
为什么被折叠?



