项目中用到一开始将一些信息加载,后面获取直接缓存获取就行
@PostConstruct
public void init() {
LoadingCache userCache = CacheBuilder.newBuilder()
.maximumSize(10000))//设置缓存上线
.expireAfterAccess(10, TimeUnit.MINUTES)
//设置时间对象没有被读/写访问则对象从内存中删除 .expireAfterWrite(10, TimeUnit.MINUTES)
//设置时间对象没有被写访问则对象从内存中删除
//移除监听器,缓存项被移除时会触发
.removalListener(new RemovalListener<String, UserProfile>() { @Override
public void onRemoval(RemovalNotification<String, UserProfile> notification) {
//逻辑
}
}
})
.recordStats()
//CacheLoader类 实现自动加载
.build(new CacheLoader<String, Object>() {
@Override
public Object load(String key) {
//从SQL或者NoSql 获取对象
return object(查询到的);
}
});
}