我很清楚,這個主題有很多問題,但我無法理解它。問題似乎是@CachePut
不會將新值添加到@Cacheable列表中。@Cacheable()沒有返回正確的緩存
調試問題後,我發現問題似乎在關鍵。
這裏是代碼片段
@CacheConfig(cacheNames = "documents")
interface DocumentRepository {
@CachePut(key = "#a0.id")
Document save(Document document);
@Cacheable()
List<Document> findAll();
}
所以,當我調用保存方法,所使用的密鑰緩存遞增的整數,或者1,2,3 ... 但是,當我試圖讓所有文檔中,緩存都使用SimpleKey []作爲鍵。如果我嘗試爲@Cacheable使用相同的密鑰,那麼將得到SpelEvaluationException,但無法在null上找到屬性「id」。
所以我最後留下的是功能緩存(數據保存在緩存中),但不知何故,我無法檢索它。 底層緩存實現是EhCache。