博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(改造)mybatis+spring与redis整合的优雅实现
阅读量:7013 次
发布时间:2019-06-28

本文共 2353 字,大约阅读时间需要 7 分钟。

hot3.png

mybatis的redis缓存扩展库已经n久没有更新过了,最新的还是1.0.0-betal2 版本。

mybatis redis扩展存在很多问题,比如,他需要你单独配置redis的为他配置单独的redis配置信息,不支持集群,很挫,我们可以把他的RedisCache重写下,使用RedisTemplate来写,简化代码,增加可读性,与项目浑然一体统一配置

import org.apache.ibatis.cache.Cache;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.web.context.ContextLoader;import org.springframework.web.context.WebApplicationContext;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * * @Title: * @Description: * @author: hollowJ * @date: 2016/11/21 * @version: V1.0.0 *//** * Cache adapter for Redis. * * @author Eduardo Macarron */public final class RedisCache2 implements Cache {    private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();    private String id;    private RedisConnectionFactory redisConnectionFactory;    private RedisTemplate
redisTemplate; public RedisCache2(final String id) { if (id == null) { throw new IllegalArgumentException("Cache instances require an ID"); } this.id = id; } @Override public String getId() { return this.id; } @Override public int getSize() { return Integer.valueOf(getRedisTemplate().opsForHash().size(id).toString()); } @Override public void putObject(final Object key, final Object value) { getRedisTemplate().opsForHash().put(id, key, value); } @Override public Object getObject(final Object key) { return getRedisTemplate().opsForHash().get(id, key); } @Override public Object removeObject(final Object key) { return getRedisTemplate().opsForHash().delete(id, key); } @Override public void clear() { getRedisTemplate().opsForHash().delete(id); } @Override public ReadWriteLock getReadWriteLock() { return readWriteLock; } @Override public String toString() { return "Redis {" + id + "}"; } private RedisTemplate
getRedisTemplate() { WebApplicationContext currentWebApplicationContext = ContextLoader.getCurrentWebApplicationContext(); return (RedisTemplate
) currentWebApplicationContext.getBean("redisTemplate"); }}

 

转载于:https://my.oschina.net/hollowj/blog/792101

你可能感兴趣的文章
Google产品管理副总裁:好产品要不断走出舒适区
查看>>
2016年中国大数据应用将发生质变
查看>>
回忆录:30岁那年,你成长了吗?(上篇)
查看>>
IDEA使用笔记
查看>>
大数据带动IDC业务需求 IDC市场将保持高速增长
查看>>
智能家居市场发展困境
查看>>
中芯国际第三财季净利润1.136亿美元
查看>>
关于SaaS和数据恢复的6大谬误
查看>>
调查:95% 的 APT 攻击源起社交网站
查看>>
《ANSYS CFX 14.0超级学习手册》——1.2 流体力学控制方程
查看>>
《Kali Linux渗透测试的艺术》—第2章2.3节安全测试方法论
查看>>
《版式设计——日本平面设计师参考手册》—第1章段落样式和字符样式的应用...
查看>>
《软件工艺师:专业、务实、自豪》一3.7.1 软件工艺峰会
查看>>
《善用佳软:高效能人士的软件应用之道》一2.4 项目管理:免费Project查看软件汇总...
查看>>
千元悬赏修复 OSC iPhone 客户端网络连接问题
查看>>
iOS 再现奇葩漏洞,恶意视频导致设备死机
查看>>
我自找的,开除我吧
查看>>
Galera 将死 — MySQL Group Replication 发布
查看>>
《基于ArcGIS的Python编程秘笈(第2版)》——1.4 总结
查看>>
Mozilla 发现用于中间人攻击的证书
查看>>