后台配置banner,前台能及时获取的实现
后台配置banner,前台能及时获取的实现
xuguangwu 发表于1年前
后台配置banner,前台能及时获取的实现
  • 发表于 1年前
  • 阅读 14
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作。项目启动的时候使用一个类似自定义缓存的map,用来读取数据库配置,后面每五分钟查询一次数据库,可以做到不重启服务配置banner的效果。

//存储状态正常的banner 
private Map<Integer, BannerDo> enableCacheMap;
@PostConstruct
private void init() {
    enableCacheMap = Maps.newConcurrentMap();
    build();
}
@Override
public MimiResult<List<BannerDo>> getEnableBannerList() {
    MimiResult<List<BannerDo>> result = MimiResult.newResult();
    if (enableCacheMap != null && !enableCacheMap.isEmpty()) {
        result.setObject(Lists.newArrayList(enableCacheMap.values()));
    }
    return result;
}
@Scheduled(cron = "0 0/5 * * * ?")
private void schedule() {
    enableCacheMap.clear();
    build();
}
private void build() {
    BannerQueryOption option = new BannerQueryOption();
    option.setState(EnableState.ENABLE.getState());
    List<BannerDo> bannerDos = bannerMapper.queryBanners(option);
    if (CollectionUtils.isNotEmpty(bannerDos)) {
        for (BannerDo bannerDo : bannerDos) {
            enableCacheMap.put(bannerDo.getId(), bannerDo);
        }
    }
}
标签: Java
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 3
博文 20
码字总数 13259
×
xuguangwu
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: