使用步骤:
- 引入jar包
- 配置本地缓存配置类
- 使用Guava本地缓存
总结:Guava Cache 和ConcurrentMap,但也不完全不样.如果说把Guava Cache看做一个卡车后箱,那么其中的Cache就是小的箱子,CacheManage 管理Cache,再由Cache去管理缓存内容.
第一步: 引入jar包
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
第二步:配置配置类
@Configuration
public class CacheConfig {
@Bean
public CacheManager getCacheManager() {
GuavaCacheManager cacheManager = new GuavaCacheManager();
cacheManager.setCacheBuilder(
CacheBuilder.newBuilder()
//写入过期时间为3600s
.expireAfterWrite(3600, TimeUnit.SECONDS)
//缓存最大数为1000
.maximumSize(1000));
return cacheManager;
}
}
第三步:Guava Cache使用详情
/**
* @author Dora
* @date 2019/8/26 13:43
**/
public class TestGuavaService {
@Resource
CacheManager cacheManager;
@Resource
SecurityUserMapper userMapper;
public void test(){
// 1.根据名字从管理器中获取到对应的本地容器,如果没有对应的容器,就创建一个
Cache userCache = cacheManager.getCache("userCache");
String userName="dora";
// 2.从缓存中获取到对应的key的信息,如果没有,就从数据库查询,并存入到缓存中.
userCache.get(userName,() -> {
SecurityUser user = userMapper.getUserByName(userName);
UserContext.initializeContext(user);
return user;
});
}
}