最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot集成緩存功能詳解

 更新時間:2024年06月13日 15:15:53   作者:-無事小神仙-  
Java?Caching定義了五個核心接口,分別是:CachingProvider、CacheManager、Cache、Entry和Expiry,這篇文章主要介紹了SpringBoot集成緩存功能詳細(xì)過程,需要的朋友可以參考下

1. 緩存規(guī)范

Java Caching定義了五個核心接口,分別是:CachingProvider、CacheManager、Cache、Entry和Expiry。

  • CachingProvider:定義了創(chuàng)建、配置、獲取、管理和控制多個CacheManager。一個應(yīng)用可以在運(yùn)行期訪問多個CachingProvider。
  • CacheManager:定義了創(chuàng)建、配置、獲取、管理和控制多個唯一命名的Cache,這些Cache存在于CacheManager的上下文中。一個CacheManager僅被一個CachingProvider所擁有。
  • Cache:是一個類似Map的數(shù)據(jù)結(jié)構(gòu)并臨時存儲以key為索引的值,一個Cache僅被一個CacheManager所擁有。
  • Entry:是一個儲存在Cache中的key-value對。
  • Expiry:每一個儲存在Cache中的條目有一個定義的有效期。一旦超過這個時間,條目為過期的狀態(tài)。一旦過期,條目將不可訪問、更新和刪除。緩存有效期可以通過ExpiryPolicy設(shè)置。

2. 緩存抽象

Spring從3.1開始定義了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口來統(tǒng)一不同的緩存技術(shù),并支持使用JCache(JSR-107)注解簡化開發(fā)。

  • Cache接口為緩存的組件規(guī)范定義,包含緩存的各種操作集合。
  • Cache接口下Spring提供了各種xxxCache的實(shí)現(xiàn),如RedisCache、EhcacheCache、ConcurrentMapCache等。
描述
Cache緩存接口,定義緩存操作,實(shí)現(xiàn)有RedisCache、EhcacheCache、ConcurrentMapCache等
CacheManager緩存管理器,管理各種緩存(Cache)組件
@Cacheable主要針對方法配置,能夠根據(jù)方法的請求參數(shù)對其結(jié)果進(jìn)行緩存
@CacheEvict清空緩存
@CachePut保證方法被調(diào)用,又希望結(jié)果被緩存
@EnableCaching開啟基于注解的緩存
keyGenerator緩存數(shù)據(jù)時key的生成策略
serialize緩存數(shù)據(jù)時value的序列化策略
@Cacheing指定多個緩存策略

3. 緩存裝配

Spring Boot提供的緩存自動配置都記錄在CacheAutoConfiguration中,其中CacheConfigurationImportSelector最為關(guān)鍵,它幫助我們導(dǎo)入常用緩存組件,組件如下:

  • 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

使用緩存時只需要導(dǎo)入對應(yīng)的實(shí)現(xiàn)即可,Spring Boot自動幫我們裝配。

4. 簡單緩存

使用Spring Boot提供的基于Map的內(nèi)存級緩存

4.1 依賴管理

引入Spring Boot緩存場景啟動器,默認(rèn)導(dǎo)入的就是SimpleCacheConfiguration配置,是基于Map的內(nèi)存級緩存

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

4.2 開啟緩存

通過@EnableCacheing注解開啟基于注解的緩存

@EnableCaching  // 開啟基于注解的緩存
@SpringBootApplication
public class SimpleCacheServiceApplication {
    public static void main(String[] args) {
        // 啟動應(yīng)用程序
        SpringApplication.run(SimpleCacheServiceApplication.class, args);
    }
}

4.3 Cacheable

@Cacheable:先查詢緩存數(shù)據(jù),如果存在直接取出緩存數(shù)據(jù)返回,如果不存在就執(zhí)行目標(biāo)方法,將方法返回值存入緩存,常用于查詢數(shù)據(jù)。

注解屬性

屬性描述
cacheNames緩存的名字
key緩存索引,默認(rèn)使用方法參數(shù)值
keyGenerator緩存索引生成器,與key屬性二選一
cacheManager緩存管理器
condition滿足條件進(jìn)行緩存
unless滿足條件不進(jìn)行緩存
sync是否使用異步,默認(rèn)為false
@Override
@Cacheable(cacheNames = "user", key = "#userId")
public User findUserInformationByUserId(Integer userId) {
    log.info("通過用戶編號查詢用戶信息......");
    return new User(userId, "Jack", LocalDateTime.now(), true);
}

第一次調(diào)用:先查詢緩存,此時緩存中不存在數(shù)據(jù),執(zhí)行目標(biāo)方法后將目標(biāo)方法返回數(shù)據(jù)存入緩存

在這里插入圖片描述

第二次調(diào)用:先查詢緩存,此時緩存存在數(shù)據(jù)不執(zhí)行目標(biāo)方法

在這里插入圖片描述

4.4 CachePut

@CachePut:每次都先執(zhí)行目標(biāo)方法,將方法返回值存入緩存,常用于添加數(shù)據(jù)和修改數(shù)據(jù)。

注解屬性

屬性描述
cacheNames緩存的名字
key緩存索引,默認(rèn)使用方法參數(shù)值
keyGenerator緩存索引生成器,與key屬性二選一
cacheManager緩存管理器
condition滿足條件進(jìn)行緩存
unless滿足條件不進(jìn)行緩存
@Override
@CachePut(cacheNames = "user", key = "#user.userId")
public Boolean insertUserInformation(User user) {
    log.info("業(yè)務(wù)層 - 添加用戶信息......");
    return true;
}

4.5 CacheEvict

@CacheEvict:在執(zhí)行目標(biāo)方法之后清除緩存,也可以指定在執(zhí)行目標(biāo)方法之前清除緩存,常用于刪除數(shù)據(jù)。

注解屬性

屬性描述
cacheNames緩存的名字
key需要清除緩存的索引,默認(rèn)使用方法參數(shù)值
keyGenerator緩存索引生成器,與key屬性二選一
cacheManager緩存管理器
condition滿足條件進(jìn)行清除緩存
allEntries是否清除全部緩存,默認(rèn)為false
beforeInvocation是否在目標(biāo)方法執(zhí)行之前清除緩存,默認(rèn)為false
@Override
@CacheEvict(cacheNames = "user", key = "#userId")
public Boolean deleteUserInformationByUserId(Integer userId) {
    log.info("業(yè)務(wù)層 - 刪除用戶信息......");
    return true;
}

4.6 Caching

@Caching:方法級注解,可以指定復(fù)雜的緩存策略。

4.7 CacheConfig

@CacheConfig:類級注解,配置該類緩存策略的一些公共屬性,比如緩存名稱、緩存管理器、緩存索引生成策略

到此這篇關(guān)于SpringBoot集成緩存功能詳解的文章就介紹到這了,更多相關(guān)SpringBoot集成緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

韶关市| 宜章县| 正安县| 祁门县| 陕西省| 皮山县| 隆林| 阿瓦提县| 靖宇县| 马龙县| 梅州市| 浦东新区| 宁强县| 三原县| 北票市| 梓潼县| 章丘市| 秭归县| 台南县| 龙川县| 资兴市| 林州市| 岐山县| 香港| 乐安县| 荥阳市| 忻州市| 肥乡县| 无为县| 兰溪市| 奇台县| 广灵县| 焦作市| 平和县| 清徐县| 保康县| 朝阳市| 富蕴县| 泉州市| 渝北区| 保康县|