对spring-data-redis方法增强的方案,不修改源码实现简单接入

背景/需求

​ 接入需要对spring-data-redis的使用进行改造,在其操作redis的不同方法调用前,加入不同的逻辑。

方案一

​ 针对于大多数系统中引入的spring-data-redis来说,对于redis中K-V类型的操作由RedisTemplate、ValueOperations进行。所以下载spring-data-redis源码,对目标类的相关方法进行侵入式改造。

方案二

​ 思考:有没有不修改源码的方法?

​ 修改源码的方式对于业务系统来说,每次升级spring-data-redis都需要加入相同的逻辑,再重新发版。尝试观察后发现,RedisTemplate是public的,ValueOperations也是public的,是否可以通过设计模式的手段实现。

​ 我们要做到对RedisTemplate的delete方法加入一些逻辑,继承重写它不就行了?这样在代码中配置RedisTemplate的时候只需要修改RedisTemplate的引用为我们新建的子类,就可以满足既有原逻辑,又可以加入新逻辑。(这样破坏了里氏代换原则)

/*
 * @author wangziyang
 * @date 2021/10/13
 **/
public class MyRedisTemplate<K, V> extends RedisTemplate<K, V> {
   
    @Override
    public void delete(K key) {
   
        super.delete(key);
        HotkeyStoreExecutor.remove(key);
    }

    @Override
    public void delete(Collection<K> keys) {
   
        super.delete(keys);
        HotkeyStoreExecutor.remove(keys);
    }
}

​ 重写完delete方法后,还有其他一些操作呢,如何处理?查看代码发现,我去,都是私有属性,那有没有公共的调用方法呢。

 */
public class RedisTemplate<K, V> 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值