欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCache常用注解及key中參數(shù)值為null問題解析

 更新時(shí)間:2023年09月04日 14:37:30   作者:曉曉先生  
這篇文章主要介紹了SpringCache常用注解及key中參數(shù)值為null的問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

常用注解及參數(shù)

@Cacheable(參數(shù))

該注解一般加在讀方法上,將方法返回的數(shù)據(jù)加到緩存。
參數(shù):

參數(shù)名說明舉例
value存到Redis中的key的前綴value="cache:test"
key存到Redis中key的后半部分key="#p0 + ':' + #p1"
unless不緩存的數(shù)據(jù)unless="#result == null"
condition要緩存的數(shù)據(jù),與unless相反

表中 #p0 為參數(shù),0表示第一個參數(shù),依次類推。也可以直接寫參數(shù)名。
表中 #result 為方法返回結(jié)果。

@CacheEvict(參數(shù))

該注解一般加在寫方法上,刪除緩存中對應(yīng)的key。
參數(shù):

參數(shù)名說明舉例
value要刪除的key的前綴value="cache:test"
key要刪除的key的后半部分key="#p0 + ':' + #p1"
allEntries是否刪除value下的所有keyallEntries=true

@Caching(參數(shù))

用于同時(shí)添加多個緩存注解,比如:

@Caching(evict={
  @CacheEvict(...)
  @CacheEvict(...)
  ...
})

key中的值為null的問題

我在接口的方法上加了@Cacheable注解,如下:

@Cacheable(value="cache:test", key="'id='+#id",unless="#result==null")
String getNameById(Integer id);

然后Redis中的緩存key為:cache:test::id=null

究其原因,是因?yàn)閷?shí)現(xiàn)類的參數(shù)名不叫id。

key中參數(shù)的名字,必須與實(shí)現(xiàn)類中的參數(shù)名稱一致,才能取到值。

如果寫名字比較麻煩怕出錯,可以寫#p0,取第一個參數(shù),就跟名字脫離關(guān)系了。

另外,如果key中只有參數(shù),且這個參數(shù)又為null,那么就會報(bào)錯:

java.lang.IllegalArgumentException: Null key returned for cache operation (maybe you are using named params on classes without debug info?) Builder[public java.lang.String com.xxx.service.impl.XXXServiceImpl.singleValue(java.lang.String)] caches=[cache:test:singleValue] | key='#id' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless='#result == null' | sync='false'

以上就是SpringCache常用注解及key中參數(shù)值為null的問題解析的詳細(xì)內(nèi)容,更多關(guān)于SpringCache key參數(shù)值null的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • IntelliJ IDEA 設(shè)置數(shù)據(jù)庫連接全局共享的步驟

    IntelliJ IDEA 設(shè)置數(shù)據(jù)庫連接全局共享的步驟

    在日常的軟件開發(fā)工作中,我們經(jīng)常會遇到需要在多個項(xiàng)目之間共享同一個數(shù)據(jù)庫連接的情況,默認(rèn)情況下,IntelliJ IDEA 中的數(shù)據(jù)庫連接配置是針對每個項(xiàng)目單獨(dú)存儲的,幸運(yùn)的是,IntelliJ IDEA 提供了一種方法來將數(shù)據(jù)庫連接配置設(shè)置為全局共享,從而簡化這一過程
    2024-10-10
  • SpringBoot?整合?Elasticsearch?實(shí)現(xiàn)海量級數(shù)據(jù)搜索功能

    SpringBoot?整合?Elasticsearch?實(shí)現(xiàn)海量級數(shù)據(jù)搜索功能

    這篇文章主要介紹了SpringBoot?整合?Elasticsearch?實(shí)現(xiàn)海量級數(shù)據(jù)搜索,本文主要圍繞?SpringBoot?整合?ElasticSearch?接受數(shù)據(jù)的插入和搜索使用技巧,在實(shí)際的使用過程中,版本號尤其的重要,不同版本的?es,對應(yīng)的?api?是不一樣,需要的朋友可以參考下
    2022-07-07
  • Java實(shí)現(xiàn)大文件的分割與合并的方法詳解

    Java實(shí)現(xiàn)大文件的分割與合并的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)大文件的分割與合并,以及分割后又再次合并操作,文中示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-08-08
  • Java中Console對象實(shí)例代碼

    Java中Console對象實(shí)例代碼

    這篇文章主要介紹了Java中Console對象實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • java項(xiàng)目中classpath的理解

    java項(xiàng)目中classpath的理解

    這篇文章介紹了java項(xiàng)目中classpath的理解,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • java使用jdbc操作數(shù)據(jù)庫示例分享

    java使用jdbc操作數(shù)據(jù)庫示例分享

    這篇文章主要介紹了java使用jdbc操作數(shù)據(jù)庫示例,需要的朋友可以參考下
    2014-03-03
  • SpringCloud Zuul實(shí)現(xiàn)負(fù)載均衡和熔斷機(jī)制方式

    SpringCloud Zuul實(shí)現(xiàn)負(fù)載均衡和熔斷機(jī)制方式

    這篇文章主要介紹了SpringCloud Zuul實(shí)現(xiàn)負(fù)載均衡和熔斷機(jī)制方式,具有很好的參考價(jià)值,希望對大家有所幫助。
    2021-07-07
  • java哈夫曼樹實(shí)例代碼

    java哈夫曼樹實(shí)例代碼

    這篇文章主要為大家介紹了java哈夫曼樹實(shí)例代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Maven+oracle+SSM搭建簡單項(xiàng)目的方法

    Maven+oracle+SSM搭建簡單項(xiàng)目的方法

    本篇文章主要介紹了Maven+oracle+SSM搭建簡單項(xiàng)目的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Java 泛型詳解與范例

    Java 泛型詳解與范例

    hello !大家好!今天的主題就是:泛型。在使用集合類時(shí),大家就已經(jīng)接觸到泛型了,那就是每個集合類后面的尖括號<>,這樣一對尖括號,在java中就稱為泛型。那么泛型這一個點(diǎn),我們又該知道多少呢?我們往下看
    2021-11-11

最新評論