zoukankan      html  css  js  c++  java
  • SpringBoot中缓存 (Cache) 的运行原理

    缓存运行原理:

    1.自动配置类:CacheAutoConfiguration
    
    2.缓存的配置类:
    
         *   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.GuavaCacheConfiguration
         *   org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration【默认】
         *   org.springframework.boot.autoconfigure.cache.NoOpCacheConfiguration
    
    
    默认SimpleCacheConfiguration生效
    
    3.给容器注册了一个CacheManager:ConcurrentMapCacheManager
    
    4.获取和创建ConcurrentMapCache类型的缓存组件,它的作用将数据保存在ConcurrentMap中
    
    5.运行流程:
    
    方法运行之前,先去查询Cache(缓存组件),按照cacheNames指定的名字获取,(CacheManager先获取相应的缓存),第一次获取缓存如果没有Cache组件会自动创建
    去Cache中查找缓存的内容,使用一个key,默认就是方法的参数,key是按照某种策略生成的,默认是使用keyGenerator生成的,默认使用SimpleKeyGenerator生成key,SimpleKeyGenerator生成key的默认策略:如果没有参数:key=new SimpleKey();如果有一个参数:key=参数的值;如果有多个参数:key=new SimpleKey(params);
    没有查到缓存就调用目标方法,将目标方法返回的结果,放进缓存中,@Cacheable标注的方法执行之前先来检查缓存中有没有这个数据,默认按照参数的值作为key去查询缓存,如果没有就运行方法并将结果放入缓存,以后再来调用就可以直接使用缓存中的数据。
  • 相关阅读:
    2.Android之按钮Button和编辑框EditText学习
    《DSP using MATLAB》Problem 3.8
    《DSP using MATLAB》Problem 3.7
    《DSP using MATLAB》Problem 3.6
    《DSP using MATLAB》Problem 3.5
    《DSP using MATLAB》Problem 3.4
    《DSP using MATLAB》Problem 3.3
    《DSP using MATLAB》Problem 3.2
    《DSP using MATLAB》Problem 3.1
    《DSP using MATLAB》Problem 2.20
  • 原文地址:https://www.cnblogs.com/nineberg/p/12350241.html
Copyright © 2011-2022 走看看