• Spring-Boot——Cache


    简单使用

    1. maven 依赖

    2. 开启缓存配置

    在启动类上开启缓存 @EnableCaching

    3. 使用缓存

    @Cacheable 是将方法的返回值保存到缓存中
    @CachePut 是根据key更新缓存中的数据
    @CacheEvict 是根据key删除缓存数据

    @Cacheable(cacheNames = {"emp"}, key = "#id")
    public Employee getEmp(Integer id) {
        Employee employeeId = employeeMapper.getEmployeeId(id);
        return employeeId;
    }
    @CachePut(cacheNames = {"emp"}, key = "#result.id")
    public Employee updateEmp(Employee employee) {
        employeeMapper.updateEmp(employee);
        return employee;
    }
    @CacheEvict(cacheNames = {"emp"}, key = "#id")
    public boolean delete(Integer id) {
        employeeMapper.delete(id);
        return true;
    }
    

    自动配置原理

    1. 默认的缓存配置器

     * 直接搜索类 ```CacheAutoConfiguration``` 找到 ```CacheConfigurationImportSelector.selectImports```方法,该方法会返回所有的自动配置类:
    ```org.springframework.boot.autoconfigure.cache.GenericCacheConfiguration```
    `org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration`
    `org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration`
    `org.springframework.boot.autoconfigure.cache.HazelcastCacheConfiguration`
    `org.springframework.boot.autoconfigure.cache.InfinispanCacheConfiguration`
    `org.springframework.boot.autoconfigure.cache.CouchbaseCacheConfiguration`
    `org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration`
    `org.springframework.boot.autoconfigure.cache.CaffeineCacheConfiguration`
    `org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration`
    `org.springframework.boot.autoconfigure.cache.NoOpCacheConfiguration`
    * 在 `application.yml` 中 设置 `debug: true`,在控制台可以看到默认使用的自动配置类
    ```
    SimpleCacheConfiguration matched:
      - Cache org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration automatic cache type (CacheCondition)
      - @ConditionalOnMissingBean (types: org.springframework.cache.CacheManager; SearchStrategy: all) did not find any beans (OnBeanCondition)
    ```
    

    2. @Cacheable 不能的key不能使用result,因为@Cacheable在方法执行前调用的。

    3. @CachePut 可以使用result中的数据,因为@CachePut在方法执行后调用。

    1. @CacheEvict 默认在方法执行之后执行(如果方法执行出错,将不会执行),可以通过 beforeInvocation=true 设置为在方法之前执行。
  • 相关阅读:
    结对项目电梯调度--设计模拟
    程序的单元测试
    一个文本单词统计的案例
    MFC vs2012 Office2013 读写excel文件
    Unix NetWork Programming(unix环境编程)——环境搭建(解决unp.h等源码编译问题)
    VMware三种上网模型
    矩阵求逆算法及程序实现(C++)
    unix环境高级编程基础知识之第四章
    2014阿里研发面试题目
    MFC下debug改成release版本出现问题及解决办法
  • 原文地址:https://www.cnblogs.com/Godfunc/p/9316563.html
Copyright © 2020-2023  润新知