springcache是乙個基於註解來更新快取的元件,對於大多數的快取操作都適用,本質是基於aop實現,也不用再重複千輪子,直接使用便是,並且支援springel表示式,對於使用教程網上還是很多的。
很多時候為了相容性以及方便,會把物件轉換成json格式存入快取(redis)中,這就需要對cache進行攔截,在加入快取及獲取快取時做乙個json格式轉換。
通過@enablecaching 開啟spring cache,檢視@enablecaching 定義可以看到此切面配置類預設是 proxycachingconfiguration,它有乙個叫cacheinterceptor 的預設實現。所有快取操作都需要經過它,只需自定義此類即可。如下所示例:
@bean
@role(beandefinition.role_infrastructure)
public cacheinterceptor cacheinterceptor(cacheoperationsource cacheoperationsource)
@override
public object invoke(methodinvocation invocation) throws throwable
return result;
throw th.getoriginal();}}
};interceptor.setcacheoperationsources(cacheoperationsource);
return interceptor;
} class mycacheoperationinvoker implements cacheoperationinvoker
@override
public object invoke() catch (throwable ex)
} public boolean isdoinvoke()
}
上面方案對於所有快取都有效,如果快取使用的是redis,還可以通過自定義 redistemplate ,替換redisserializer序列化方式。把自定的redistemplate注入到cachemanager中即可。
快取 SpringCache 自定義快取配置
redis 預設使用 jdk 序列化,需要我們配置序列化機制,自定義乙個配置類,否則存入的資料顯示亂碼 enablecaching 開啟快取 configuration public class mycacheconfig 使用以上配置後,雖然亂碼的問題解決了,但配置檔案又不生效了,比如過期時間等,...
Redis MyBatis自定義註解實現快取
在資料庫查詢前我想查詢是否存在快取,不存在則查詢,這樣的重複性操作寫在 裡很難看,通過aspectj的aop程式設計,可以很優雅地實現這個快取過程。但是在使用過程中,發現spring自帶的 cacheable註解序列化物件時是使用jdk的序列化工具往redis裡存資料,這樣很佔redis的記憶體,為...
自定義 如何自定義協議
何為自定義協議,其實是相對標準協議來說的,這裡主要針對的是應用層協議 常見的標準的應用層協議如http ftp smtp等,如果我們在網路通訊的過程中不去使用這些標準協議,那就需要自定義協議,比如我們常用的rpc框架 dubbo,thrift 分布式快取 redis,memcached 等都是自定義...