国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring Framework 參考文檔(JCache(JSR-107)注解)

fengxiuping / 986人閱讀

摘要:注解從版開始,的緩存抽象完全支持標(biāo)準(zhǔn)注解和以及和。使用方法調(diào)用的結(jié)果更新緩存,要求將其作為使用注解的參數(shù)傳遞給它由于這種差異,允許在實際方法調(diào)用之前或之后更新緩存。非常相似,當(dāng)方法調(diào)用導(dǎo)致異常時,支持條件驅(qū)逐。

JCache(JSR-107)注解

從4.1版開始,Spring的緩存抽象完全支持JCache標(biāo)準(zhǔn)注解:@CacheResult@CachePut@CacheRemove@CacheRemoveAll以及@CacheDefaults@CacheKey@CacheValue。即使不將緩存存儲庫遷移到JSR-107,也可以使用這些注解,內(nèi)部實現(xiàn)使用Spring的緩存抽象,并提供符合規(guī)范的默認(rèn)CacheResolverKeyGenerator實現(xiàn)。換句話說,如果你已經(jīng)在使用Spring的緩存抽象,則可以切換到這些標(biāo)準(zhǔn)注解,而無需更改緩存存儲(或配置,就此而言)。

特性摘要

對于那些熟悉Spring的緩存注解的,下表描述了Spring注解與JSR-107版本之間的主要區(qū)別:

Spring JSR-107 備注
@Cacheable @CacheResult 非常相似,@CacheResult可以緩存特定的異常并強(qiáng)制執(zhí)行該方法,而不管緩存的內(nèi)容如何。
@CachePut @CachePut Spring使用方法調(diào)用的結(jié)果更新緩存,JCache要求將其作為使用@CacheValue注解的參數(shù)傳遞給它;
由于這種差異,JCache允許在實際方法調(diào)用之前或之后更新緩存。
@CacheEvict @CacheRemove 非常相似,當(dāng)方法調(diào)用導(dǎo)致異常時,@CacheRemove支持條件驅(qū)逐。
@CacheEvict(allEntries=true) @CacheRemoveAll 請參閱@CacheRemove
@CacheConfig @CacheDefaults 允許你以類似的方式配置相同的概念。

JCache有javax.cache.annotation.CacheResolver的概念,它與Spring的CacheResolver接口相同,只是JCache只支持一個緩存。默認(rèn)情況下,簡單的實現(xiàn)根據(jù)注解上聲明的名稱檢索要使用的緩存,應(yīng)該注意的是,如果在注解上沒有指定緩存名稱,則會自動生成默認(rèn)值,有關(guān)更多信息,請參閱@CacheResult#cacheName()的javadoc。

CacheResolver實例由CacheResolverFactory檢索,可以為每個緩存操作自定義工廠,如以下示例所示:

@CacheResult(cacheNames="books", cacheResolverFactory=MyCacheResolverFactory.class) 
public Book findBook(ISBN isbn)
對于所有引用的類,Spring嘗試查找具有給定類型的bean,如果存在多個匹配項,則會創(chuàng)建一個新實例,并且可以使用常規(guī)bean生命周期回調(diào),例如依賴項注入。

鍵由javax.cache.annotation.CacheKeyGenerator生成,其作用與Spring的KeyGenerator相同,默認(rèn)情況下,除非至少有一個參數(shù)使用@CacheKey注解,否則將考慮所有方法參數(shù),這類似于Spring的自定義鍵生成聲明,例如,以下是相同的操作,一個使用Spring的抽象,另一個使用JCache:

@Cacheable(cacheNames="books", key="#isbn")
public Book findBook(ISBN isbn, boolean checkWarehouse, boolean includeUsed)

@CacheResult(cacheName="books")
public Book findBook(@CacheKey ISBN isbn, boolean checkWarehouse, boolean includeUsed)

你還可以在操作上指定CacheKeyResolver,類似于指定CacheResolverFactory的方式。

JCache可以管理帶注解的方法拋出的異常,這可以防止更新緩存,但它也可以將異常緩存為失敗的指示器,而不是再次調(diào)用該方法。假設(shè)如果ISBN的結(jié)構(gòu)無效,則拋出InvalidIsbnNotFoundException,這是一個永久性的失敗(用這樣的參數(shù)無法檢索到書籍),下面緩存異常,以便使用相同的無效ISBN進(jìn)一步調(diào)用直接拋出緩存的異常,而不是再次調(diào)用該方法:

@CacheResult(cacheName="books", exceptionCacheName="failures"
            cachedExceptions = InvalidIsbnNotFoundException.class)
public Book findBook(ISBN isbn)
啟用JSR-107支持

除了Spring的聲明性注解支持之外,你無需執(zhí)行任何特定的操作來啟用JSR-107支持,如果JSR-107 API和spring-context-support模塊都存在于類路徑中,則@EnableCachingcache:annotation-driven元素都會自動啟用JCache支持。

根據(jù)你的用例,選擇基本上是你自己的,你甚至可以在某些服務(wù)上使用JSR-107 API并在其他服務(wù)上使用Spring自己的注解來混合和匹配服務(wù)。但是,如果這些服務(wù)影響相同的緩存,則應(yīng)使用一致且相同的鍵生成實現(xiàn)。
上一篇:聲明式基于注解的緩存

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/76180.html

相關(guān)文章

  • SpringBoot 實戰(zhàn) (十一) | 整合數(shù)據(jù)緩存 Cache

    摘要:前言如題,今天介紹的數(shù)據(jù)緩存。說明確實做了數(shù)據(jù)緩存,第二次的測試結(jié)果是從數(shù)據(jù)緩存中獲取的,并沒有直接查數(shù)據(jù)庫。為為的數(shù)據(jù)做了緩存插入數(shù)據(jù)返回的結(jié)果數(shù)據(jù)庫中的結(jié)果訪問結(jié)果如下圖。后語以上為數(shù)據(jù)緩存的教程。 微信公眾號:一個優(yōu)秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 如題,今天介紹 SpringBoot 的數(shù)據(jù)緩存。做過開發(fā)的都知道程序的瓶頸在于數(shù)據(jù)庫,我們也知道內(nèi)...

    idealcn 評論0 收藏0
  • 阿里巴巴開源的通用緩存訪問框架JetCache介紹

    摘要:是由阿里巴巴開源的通用緩存訪問框架,如果你對很熟悉的話,請一定花一點時間了解一下,它更好用。有了,我們就可以更方便的基于統(tǒng)一的接口訪問緩存。 JetCache是由阿里巴巴開源的通用緩存訪問框架,如果你對Spring Cache很熟悉的話,請一定花一點時間了解一下JetCache,它更好用。 JetCache提供的核心能力包括: 提供統(tǒng)一的,類似jsr-107風(fēng)格的API訪問Cache...

    vpants 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<