初始化缓存

@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);
        }
    }
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值