java缓存1

controller:

package com.eyee.api.activity.controller;
import com.eyee.api.activity.Cache.TestCache;
import com.eyee.common.http.ResponseBase;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RequestMapping("/test")
@RestController
public class TestController {
    @Autowired
    TestCache testCache;
    @RequestMapping("test")
    public ResponseBase Test(@RequestParam("key") Integer key){
        List<String> data = testCache.test(key);
        return ResponseBase.succeeded().setData(data);
    }
}


cache:

package com.eyee.api.activity.Cache;

import com.eyee.api.activity.service.TestService;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

@Service
public class TestCache {
    private final static Logger logger = LoggerFactory.getLogger(CouponInfoCache.class);
    static LoadingCache<Integer, List<String>> cache;
    @Autowired
    TestService service;
    //创建缓存
    public TestCache() {
        System.out.println("init====");
        cache= CacheBuilder.newBuilder()
                // 设置缓存初始个数
                .initialCapacity(1)
                // 设置缓存定时刷新
                .refreshAfterWrite(30, TimeUnit.MINUTES)
                // 设置缓存一定时间没有被访问回收
                .expireAfterAccess(20,TimeUnit.MINUTES)
                // 设置缓存个数
                .maximumSize(2)
                .build(new CacheLoader<Integer, List<String>>() {
                    @Override
                    public List load(Integer key) {
                        logger.info("刷新缓存key"+key);
                        return (List<String>) service.getdata(key).getData();
                    }
                });
    }

    //获取缓存
    public List<String> test(Integer key){
        List<String> list=null;
        try {
            list = cache.get(key);
        }catch (Exception e){
            logger.info("清除缓存");
            cache.invalidate(key);
        }
        return list;
    }

    //清除缓存
    public void  invalidateAll(){
        logger.info("begin invalidateAll------------");
        cache.invalidateAll();
        logger.info("end invalidateAll------------");
    }
}

service:

package com.eyee.api.activity.service;

import com.eyee.common.http.ResponseBase;

public interface TestService {
    public ResponseBase getdata(Integer aa);
}

ServiceImpl

package com.eyee.api.activity.impl;

import com.eyee.api.activity.repository.mysql.ActivityCouponRepository;
import com.eyee.api.activity.service.TestService;
import com.eyee.common.http.ResponseBase;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class TestServiceImpl implements TestService {
    @Autowired
    ActivityCouponRepository activityCouponRepository;
    @Override
    public ResponseBase getdata(Integer aa) {
        List<String> strings = activityCouponRepository.couponIds(aa);
        if(strings==null){
           return ResponseBase.succeeded().setData(null);
        }
        return ResponseBase.succeeded().setData(strings);
    }
}


Respository:

@Repository
public interface ActivityCouponRepository extends JpaRepository<ActivityCoupon,Integer> {
    @Query(value = "select couponid from coupon where activitytype =:activitytype",nativeQuery = true)
    List<String> couponIds(@Param("activitytype")Integer activitytype);

}

结果:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值