專案基於springboot,使用了springcache。
早先在網上找了乙份springcache的配置,後來由於需要使用到自定義序列化方法,注入乙個自定義的序列化類。但是在後來發現自定義的序列化類始終沒有呼叫,後來檢視原始碼後終於發現了原因
先附上正確的配置
@bean
public cachemanager cachemanager
(redisconnectionfactory factory, sessionserializer serializer)
", serializer)
; redisserializationcontext.serializationpair pair = redisserializationcontext.serializationpair.
fromserializer
(serializer)
; logger.
debug
("生成的cache序列化工具={}"
, pair)
; rediscacheconfiguration config = rediscacheconfiguration.
defaultcacheconfig()
;// 生成乙個預設配置,通過config物件即可對快取進行自定義配置
config = config.
entryttl
(duration.
ofminutes(10
))// 設定快取的預設過期時間,也是使用duration設定
.serializevalueswith
(pair)
// .serializekeyswith(redisserializationcontext.serializationpair.fromserializer(new stringredisserializer()))
.disablecachingnullvalues()
;// 不快取空值
logger.
debug
("初始化完成的config={}"
, config)
;// 設定乙個初始化的快取空間set集合
setcachenames =
newhashset
<
>()
; cachenames.
add(cache_name)
;return rediscachemanager.
builder
(new
custtlrediscachewriter
(factory)
)// 使用自定義的快取配置初始化乙個cachemanager
.cachedefaults
(config)
//這一句必須要最先執行,否則實際執行時使用的是defaultconfig
.initialcachenames
(cachenames)
// .withinitialcacheconfigurations(configmap)
// .transactionaware()
.build()
;}
重要在於最後一行return的時候,早先的找到的資料說initialcachenames方法一定要先執行,否則就會巴拉巴拉~~~,,結果就掉坑了
如果initialcachenames方法先執行的話,實際上cachemanager裡使用的是defaultconfig,裡面的序列化方式也就是jdk序列化,後面在呼叫cachedefaults也沒有用了。
快取 SpringCache 自定義快取配置
redis 預設使用 jdk 序列化,需要我們配置序列化機制,自定義乙個配置類,否則存入的資料顯示亂碼 enablecaching 開啟快取 configuration public class mycacheconfig 使用以上配置後,雖然亂碼的問題解決了,但配置檔案又不生效了,比如過期時間等,...
MHN配置中的踩坑鑑賞
在github官方文件中mhn的配置中有介紹 我這裡選擇了ubuntu16.04,一定要選64bit的!mhn配置中需要用到mongodb3這個只支援64bit,不然會報錯 ubuntu安裝映象 ps 虛擬機器安裝ubuntu系統時,要先以韌體啟動,並選擇cd rom啟動,啟動後正常安裝,安裝完成之...
echarts配置踩坑
1 legend出不來 legend中data的值要對應series中的name,或者data中對應name legend series 2 雙y軸設定,y軸陣列存放兩個物件,series中的yaxisindex屬性對應y軸 yaxis series 3 legend寬高屬性 itemwidth 1...