Spirng Cache(第二篇)自定义配置

Spirng Cache(第二篇)自定义配置

从3.1版开始,Spring Framework提供了对现有Spring应用程序透明地添加缓存的支持。与事务 支持类似,缓存抽象允许一致地使用各种缓存解决方案,而对代码的影响最小

从Spring 4.1开始,通过JSR-107注释和更多自定义选项的支持,缓存抽象得到了显着改进。

这篇介绍下如果根据Spring 缓存注解实现我们的自定义配置

自定义缓存key KeyGenerator

当Spel表达式(90%情况下都能满足)不能满足我们需求是可以使用自定义缓存key来实现,只需指定KeyGenerator接口的实现类的bean名称

比如:key值添加后缀(Spel表达式也可以实现,这里只为演示)

@Cacheable(keyGenerator = "myKeyGenerator")
public Book findBookKeyGenerator(String isbn) {
   
    return createBook(isbn);
}

KeyGenerator实现类,添加后缀

@Component
public class MyKeyGenerator implements KeyGenerator {
   
    @Override
    public Object generate(Object target, Method method, Object... params) {
   
        String key = params[0] + "-MyKeyGenerator";
        System.out.println(key);
        return key;
    }
}

单元测试

@Test
public void findBookKeyGenerator() {
   
    Book book1 = bookService.findBook(ISBN);
    Book book2 = bookService.findBookKeyGenerator(ISBN);
    assert book1 != book2;
}

自定义缓存管理 CacheManager

这个缓存管理器只打印一句话,没有实现任何逻辑。具体的缓存委派给cacheManager

public class MyCacheManager implements CacheManager {
   

    private final CacheManager cacheManager;

    public MyCacheManager(CacheManager cacheManager) {
   
        this.cacheManager = cacheManager;
    }

    @Override
    public Cache getCache(String name) {
   
        System.out.println("自定义缓存管理器,name=" + name);
        return cacheManager.getCache(name);
    }

    @Override
    public Collection<String> 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值