使用快取的好處有:
壞處有:
下面以springboot2.1.6.release為例,學習快取的使用
>
>
org.springframework.bootgroupid
>
>
spring-boot-starter-cacheartifactid
>
dependency
>
springboot 提供幾個註解實現快取功能, 通過aop方式實現
序號註解名含義1
@enablecaching
開啟快取註解
2@cacheable
如果能從快取拿到資料,直接用快取的
如果拿不到,執行方法,並將結果進行快取
3@cacheput
執行方法,並將結果存入快取,快取已存在則更新
4@cacheevict
預設執行方法後觸發刪除快取
5@caching
用於組合多種快取策略
6@cacheconfig
設定類級別快取通用屬性
cacheable提供以下幾個屬性更細粒度控制快取
序號屬性名含義1
value/cachenames
快取名字
2key
快取的key生成規則,spel表示式
3keygenerator
自定義key生成策略
4cachemanager
自定義快取管理器,預設concurrentmapcachemanager
5cacheresolver
自定義快取解析器, 預設******cacheresolver
6condition
快取條件,傳入引數經過condition 判斷為true快取,spel表示式
7unless
和condition類似,不過unless是在方法執行完畢後對結果進行判斷,是否加入快取, spel表示式(常用#result)
8sync
應用多執行緒環境下,多個執行緒key相同,只會有乙個執行緒對快取讀寫,其他阻塞
stringboot @cacheable key針對方法引數預設生成策略為:
key和keygenerator只能指定乙個,互斥
@enablecaching
public
class
}
@data
public
class
user
implements
serializable
@restcontroller
public
class
basecontroller
("/cacheevict"
)@cacheevict
(value =
"cache-test"
)public object cacheevict()
("/cacheput"
)@cacheput
(value =
"cache-test"
)public object cacheput()
("/testkey"
)// 將引數name和key拼接作為key
@cacheable
(value =
"cache-test"
, key =
"#name + #age"
)public object cachekey
(string name, integer age)
("/testcondition"
)// 當age > 10,將結果加入快取
@cacheable
(value =
"cache-test"
, condition =
"#age > 10"
)public object cachecondition
(string name, integer age)
("/testunless"
)// 如果方法執行結果user.age > 10就不快取
@cacheable
(value =
"cache-test"
, unless =
"#result.age > 10"
)public object cacheunless
(string name, integer age)
("/testsync"
)// 當sync = true,三個執行緒key相同,只有乙個對快取讀寫,讀寫完後其他執行緒從快取取,所以只會列印一次-----進入cachesync----
// 當sync = false時,三個執行緒key相同,判斷快取為空,同時進入方法,會列印三次-----進入cachesync----
@cacheable
(value =
"cache-test"
, sync =
true
)public object cachesync
(string name, integer age)
}
@runwith
(springrunner.
class
)@springboottest
public
class
",forentity);}
).start()
;new
thread((
)->
",forentity);}
).start()
;new
thread((
)->
",forentity);}
).start()
;try
catch
(interruptedexception e)
}}
springboot 內建對一些快取的預設支援,springboot也是按照以下順序對快取的提供者進行檢測
generic
jcache (jsr-107) (ehcache 3, hazelcast, infinispan, and others)
ehcache 2.x
hazelcast
infinispan
couchbase
redis
caffeine
******
concurrenmap
ehcache
redis
學習小結之 MFC
問題1 mfc列表框中內容不按照新增的順序顯示 解決 控制項屬性 行為 sort false l 等於cstring型別的null,不等於一般的null 控制項變數 control 代表這個控制項 value 傳值 獲取列表框當前選項的下標 從0開始 control.getcursel 讀取檔案 c...
springBoot學習之註解小記
controller responsebody restcontroller 當方法或者類上增加了 responsebody註解時,所返回的引數為json格式。當沒有此註解時,引數會以鍵值對的形式傳入。data 提供該類所有屬性的getting和setting方法。cookievalue 用來獲取c...
SpringBoot 學習之Spring篇
scope 描述的是 spring 容器如何新建 bean 的例項的。spring 的scope 有以下幾種,通過 scope 註解來實現。1 singleton 乙個 spring 容器中只有乙個 bean 的例項,此為 spring的預設配置。2 prototype 每次呼叫新建乙個 bean ...