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);
}
}
/
/
/
/
进行保存


浙公网安备 33010602011771号