springCache配置中踩的坑

2021-08-31 09:21:18 字數 1862 閱讀 5578

專案基於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...