28-redis分布式缓存---自定义mybatis的cache缓存实现我们的redis缓存----将值存入redis缓存


一、编写自定义的RedisCache,实现ibatis的Cache接口

package com.study.cache;

import org.apache.ibatis.cache.Cache;

//自定义redis缓存
public class RedisCache implements Cache {

    //当前放入缓存的mapper.xml文件的namespace
    private final String id;

    //必须存在一个构造方法
    public RedisCache(String id){
        this.id = id;
    }

    //返回cache的唯一标识
    @Override
    public String getId() {
        return this.id;
    }

    //缓存中放入值
    @Override
    public void putObject(Object key, Object value) {
        System.out.println("key:" + key.toString());
        System.out.println("value:" + value);
    }

    //缓存中获取值
    @Override
    public Object getObject(Object key) {
        System.out.println("key: " + key);
        return null;
    }

    @Override
    public Object removeObject(Object key) {
        return null;
    }

    @Override
    public void clear() {

    }

    @Override
    public int getSize() {
        return 0;
    }
}

注意:
1、要创建id属性,用于存放放入缓存的mapper.xml文件的namespace
2、要编写一个构造方法,给我们的id赋值
3、注意要通过getId()方法,返回我们的id给我们的mapper文件
/
/
/
/
接下来,我们就可以注重我们cache的实现,我们可以通过RedisTemplate来将我们要存入缓存的内容放入缓存,但是RedisCache是mybatis创建的,不是Spring管理的,我们没法从Spring的工厂里面取得RedisTemplate,所以我们要创建一个工厂类,用于获取我们的RedisTemplate
/
/
/
/
获取Spring工厂的类

package com.study.util;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ApplicationContextUtils implements ApplicationContextAware {

    //用于保存我们的工厂
    private static ApplicationContext applicationContext;

    //springboot启动成功后,将创建好的工厂,以参数的形式传递
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    //提供在工厂获取对象的方法
    //注意bean的首字母小写  RedisTemplate --->  redisTemplate
    public static Object getBean(String beanName){
        return applicationContext.getBean(beanName);
    }
}

/
/
/
/
进行保存

posted @ 2021-12-02 23:54  不是孩子了  阅读(172)  评论(0)    收藏  举报