设为首页 加入收藏

TOP

SpringBoot的EnableCaching简述(二)
2023-07-25 21:35:08 】 浏览:45
Tags:SpringBoot EnableCaching 简述
t.println("say something!"); } }

CacheManager有两个方法需要被实现:

  • getCache(String) - 获取缓存存取器。这里的name其实就对应了@Cacheable注解中的valuecacheName参数。
  • getCacheNames - 获取类中所有缓存的名称集合。这主要是为了Spring内部的统一管理需要。
    因为 Spring采用了默认替补策略,所以我们使用@Component或是通过@Bean自动注入后,默认的缓存管理器就会切换成我们自定义的。如果我们自定义了两个的话,可以通过@Primary来设定默认管理器。

Cache

缓存存取器,用来管理缓存键值对的基本单元。
为了能对不同的缓存采用不同的存取策略,我们可以定制不同的Cache,并通过自定义的CacheManagergetCache方法返回对应的Cache
举个例子:

public final static class MyCache extends ConcurrentMapCache {
    public MyCache(String name) {
        super(name);
    }
    @Override
    public <T> T get(Object key, Class<T> type) {
        System.out.println("正在读取 - " + key);
        return super.get(key, type);
    }
    @Override
    public <T> T get(Object key, Callable<T> valueLoader) {
        System.out.println("正在读取 - " + key);
        return super.get(key, valueLoader);
    }
    @Override
    public ValueWrapper get(Object key) {
        System.out.println("正在读取 - " + key);
        return super.get(key);
    }
}

这里的MyCache集成了ConcurrentMapCache,并对每次缓存值的获取都进行了控制台输出。

KeyGenerator

缓存key生成器,用于自定义规则缓存key的生成。
其接口的方法只有一个:

public interface KeyGenerator {
    Object generate(Object target, Method method, Object... params);
}

一目了然,通过调用的目标对象、目标方法与方法入参进行key的生成。这里不做过多赘述。
不过需要注意的是,由于不同类可能有同名同参数的方法,这里建议加上target.getClass().getName()来作为标记,避免出现不希望的缓存映射。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【电脑操作技巧】重装系统之后的.. 下一篇Seata 全局锁等待超时 问题排查

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目