@Slf4j
@Component
public class ABCService {
@Resource
private AMapper aMapper;
private LoadingCache<String, Optional<ABC>> aCache;
@PostConstruct
public void init() {
this.aCache = CacheBuilder.newBuilder()
.initialCapacity(10)
.maximumSize(100)
.recordStats()
.expireAfterWrite(30, TimeUnit.MINUTES)
.build(
new CacheLoader<String, Optional<ABC>>() {
@SuppressWarnings("NullableProblems")
@Override
public Optional<ABC> load(String key) throws Exception {
return queryABC(key);
}
}
);
}
public Optional<ABC> queryABC(String aCode) {
QueryWrapper<ABCPo> queryWrapper = Wrappers.query();
queryWrapper.eq(ABCPo.ABC_CODE_COLUMN, aCode);
ABCPo aPo = aMapper.selectOne(queryWrapper);
if (aPo == null) {
return Optional.empty();
}
return Optional.of(ABCConverter.INSTANCE.toDto(aPo));
}
public ABC getABC(String aCode) {
try {
Optional<ABC> account = aCache.get(aCode);
return account.orElse(null);
} catch (ExecutionException ex) {
log.error("查询缓存出现异常", ex);
throw new ABCException(ExceptionCode.QUERY_ABC_FROM_CACHE_ERROR);
}
}
}
初始化缓存
最新推荐文章于 2024-01-05 11:32:07 发布