使用guavaCache做一个缓存,这次主要是使用了定时过期的一个特性,由于存储时间短,所以没有使用redis
@Component
public class BaseGuavaCache {
private static final Logger LOGGER = LoggerFactory.getLogger(BaseGuavaCache.class);
private static LoadingCache<Integer, UserInfoBean> userInfoCache;
@Autowired
private IUserService userService;
@PostConstruct
public void init() {
userInfoCache = CacheBuilder.newBuilder().expireAfterWrite(30, TimeUnit.SECONDS).build(new CacheLoader<Integer, UserInfoBean>() {
@Override
public UserInfoBean load(Integer userId) throws Exception {
UserInfoBean userInfoByCache = userServiceV2.getUserInfoByCache(userId, ConstUtil.RequestType.BACK);
return userInfoByCache;
}
});
}
public UserInfoBean getUserInfo(int userId) {
try {
return userInfoCache.get(userId);
} catch (ExecutionException e) {
LOGGER.error("query userInfo error. userId={}", userId, e);
return null;
}
}
}
- 声明创建的缓存类为一个springbean
- 在缓存类中创建一个GuavaCache存储器LoadingCache,需要传入泛型.
- 初始化时创建存储器实例
- 完成