Spring boot 使用註解快取

2021-09-02 02:31:57 字數 2139 閱讀 5041

註解在spring中的應用很廣泛,幾乎成為了其標誌,這裡說下使用註解來整合快取。 

cache方面的註解主要有以下5個

@cacheable 觸發快取入口(這裡一般放在建立和獲取的方法上)

@cacheevict 觸發快取的eviction(用於刪除的方法上)

@cacheput 更新快取且不影響方法執行(用於修改的方法上,該註解下的方法始終會被執行)

@caching 將多個快取組合在乙個方法上(該註解可以允許乙個方法同時設定多個註解)

@cacheconfig 在類級別設定一些快取相關的共同配置(與其它快取配合使用)

上邊5個註解中目前我學習的時候使用了前三個,所以這裡主要針對前三個來展開,後邊兩個結合spring官方文件來簡單介紹下。

@cacheable

先看看它的原始碼

public @inte***ce cacheable ;

/*** 同value(),決定要使用那個/些快取

*/@aliasfor("value")

string cachenames() default {};

/*** 使用spel表示式來設定快取的key,如果不設定預設方法上所有引數都會作為key的一部分

*/string key() default "";

/*** 用來生成key,與key()不可以共用

*/string keygenerator() default "";

/*** 設定要使用的cachemanager,必須先設定好cachemanager的bean,這是使用該bean的名字

*/string cachemanager() default "";

/*** 使用cacheresolver來設定使用的快取,用法同cachemanager,但是與cachemanager不可以同時使用

*/string cacheresolver() default "";

/*** 使用spel表示式設定出發快取的條件,在方法執行前生效

*/string condition() default "";

/*** 使用spel設定出發快取的條件,這裡是方法執行完生效,所以條件中可以有方法執行後的value

*/string unless() default "";

/*** 用於同步的,在快取失效(過期不存在等各種原因)的時候,如果多個執行緒同時訪問被標註的方法

* 則只允許乙個執行緒通過去執行方法

*/boolean sync() default false;

}details/82429603

@cacheput

這是個一般用於修改方法上的註解,它的**跟cacheable基本相同,這裡不做介紹。 

現在說下cacheput和cacheable的主要區別。

@cacheable:它的註解的方法是否被執行取決於cacheable中的條件,方法很多時候都可能不被執行。 

@cacheput:這個註解不會影響方法的執行,也就是說無論它配置的條件是什麼,方法都會被執行,更多的時候是被用到修改上。

@cacheevict

它跟上邊的兩個註解相比,原始碼中多了兩個屬性

public @inte***ce cacheevict
@caching

它是個組合上面三個註解的註解,之前我並沒有用到,現在結合spring文件簡單說下。

原始碼

public @inte***ce caching ;

cacheput put() default {};

cacheevict evict() default {};

}

它只是給出了三種註解的組合,並沒有給出限制條件,所以其使用也很簡單,如下

@caching(evict = )

public book importbooks(string deposit, date date)

public @inte***ce cacheconfig ;

string keygenerator() default "";

string cachemanager() default "";

string cacheresolver() default "";

}

SpringBoot 註解使用

springboot 註解 作用型別 解釋 notnull 任何型別 屬性不能為null notempty 集合 集合不能為null,且size大於0 notblank 字串 字元 字元類不能為null,且去掉空格之後長度大於0 asserttrue boolean boolean 布林屬性必須是t...

SpringBoot 整合 Ehcache 快取

1 引入ehcache相關核心依賴,其他資料庫等依賴不一一枚舉,根據自己需要進行引入 net.sf.ehcache ehcache 2 引入ehcache 相關配置檔案 3 引入ehcache 配置類 本地堆快取配置類 author asus configuration 將ehcache 配置檔案注...

SpringBoot整合Redis實現快取

1.引入spring boot starter data redis依賴。org.springframework.boot spring boot starter data redis spring.redis.host 118.24.44.1693.使用redistemplate操作redis。r...