题记:实现缓存大部分可以使用redis实现,简单、便捷,redis在针对应用部署多服务器是很好的,但如果针对单一服务器,内存缓存更好。

1、创建CacheLoader.java

import java.util.Iterator;
import java.util.Map; /**
* Created by Tisa on 2018/5/9.
* 将数据库表记录加载到jvm
*/
public class CacheLoader<V,T> {
/**
* 将数据库中的记录加载到jvm缓存,使用Map存储
*
* @param from 从数据库load出的记录
* @param to
*/
public void loadCache(Map<V, T> from, Map<V, T> to) {
if (!from.isEmpty()) {
Iterator<V> iterator = to.keySet().iterator();
while (iterator.hasNext()) {
V key = iterator.next();
if (to.containsKey(key)) {
to.remove(key);
}
}
to.putAll(from);
} else {
to.clear();
}
}
}

2、在springboot启动项目时加载进内存,创建ProvinceAppkeyAndSecretCache.java

import com.entity.ProvinceAppkeyAndAppsecret;
import com.entity.ProvinceInfo;
import com.mapper.ProvinceAppkeyAndSecretMapper;
import com.mapper.ProvinceInfoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import javax.annotation.PostConstruct;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap; /**
* @author:yangwj
*/
@Component
public class ProvinceAppkeyAndSecretCache {
private static final Map<String, ProvinceAppkeyAndAppsecret> provinceAppkeyAndSecretCache = new ConcurrentHashMap<>();
@Autowired
private ProvinceAppkeyAndSecretMapper provinceAppkeyAndSecretMapper; @PostConstruct
public void init() {
Map<String, ProvinceAppkeyAndAppsecret> provinceAppkeyAndSecretMap = loadProvinceInfo();
CacheLoader<String, ProvinceAppkeyAndAppsecret> loader = new CacheLoader<String, ProvinceAppkeyAndAppsecret>();
loader.loadCache(provinceAppkeyAndSecretMap, provinceAppkeyAndSecretCache);
} private Map<String, ProvinceAppkeyAndAppsecret> loadProvinceInfo() {
Map<String, ProvinceAppkeyAndAppsecret> map = new HashMap<>();
List<ProvinceAppkeyAndAppsecret> list = provinceAppkeyAndSecretMapper.selectAll();
if (list == null) {
return Collections.emptyMap();
}
Iterator<ProvinceAppkeyAndAppsecret> iterator = list.iterator();
while (iterator.hasNext()) {
ProvinceAppkeyAndAppsecret next = iterator.next();
map.put(next.getAppkey(), next);
}
return map;
} public ProvinceAppkeyAndAppsecret get(String appkey) {
return provinceAppkeyAndSecretCache.get(appkey);
}
}

3、在controller中调用

@RestController
@RequestMapping("Cache")
public class CacheController extends BaseOrderController {
private static final Logger LOGGER = LoggerFactory.getLogger(com.controller.CacheController.class); @Autowired
private ProvinceAppkeyAndSecretCache provinceAppkeyAndSecretCache; @RequestMapping("/cache")
public String orderRelationUpdateNotify(HttpServletRequest request) {
String appKey = request.getParameter("appKey");
//从内存中获取
ProvinceAppkeyAndAppsecret provinceAppkeyAndAppsecret =provinceAppkeyAndSecretCache.get(appKey);
}
}

最新文章

  1. 作为前端应当了解的Web缓存知识
  2. 干货发布:VSS文件清理工具
  3. 【JavaScript】放大镜效果
  4. Django模板系统——过滤器
  5. WOFF mime类型
  6. ArrayList、HashTable、List、Dictionary的演化及如何选择使用
  7. linux命令行下命令参数前的一横(-)和两横(--)的区别
  8. 防止sql注入式攻击 SQL注入学习——三层架构
  9. Web动效研究与实践
  10. schema for clojure
  11. scrollView顶部空白
  12. HTML5中a标签的锚点使用
  13. webrtc初探之一对一的连接过程(一)
  14. input按钮使用方法
  15. Blinn-Phong模型
  16. windows 10安装docker一直挂起在Installing Components and Removing Files
  17. Pandas字符串操作及实例应用
  18. 【C#】异步的用法
  19. 使用JDBC连接MySQL数据库
  20. ascll方便查询

热门文章

  1. UDS报文解读
  2. A主机ping B主机发生了什么?
  3. Zookeeper01——zk的基本信息和安装
  4. ubuntu配置jdk(收藏)
  5. Spring boot传值注意事项
  6. Appium简介以及环境安装
  7. 题解 【POJ1934】 Trip
  8. css3常用动画大全:translate、scale、opacity、rotate (转)
  9. UVA 315 求割点 模板 Tarjan
  10. WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商