[英]Spring Cache + Spring Expression Language (SpEL) + Redis
org.springframework.expression.spel.SpelEvaluationException: EL1007E:(pos 0): 在 null 上找不到字段或屬性“orderId”
orderId
是我訂單的 Vo 中的屬性之一
如何在我的應用程序中使用 Spring Spring 表達式語言 (SpEL) 方法簽名@Cacheable(value = "customerId", key = "#orderVO.orderId" )
異常本身說明參數對象orderVO為空。 很明顯,將沒有null對象的屬性。 據我所知,您無法解決這個問題。
在調用該方法之前,請確保我的orderVO不為null。
PS:此錯誤與Redis,SpEL或Spring配置無關。
編輯:要非常簡單地解釋任何緩存都可以視為HashMap,現在想象一下當spring將嘗試緩存您的對象時,它將需要一個密鑰來將返回的對象放在該對象上。 但是,當您的orderVO為null時,將無法獲得orderId,因此無法將您的對象放入緩存(無法生成哈希鍵,等等)。
問題是,當您將 SpEl 與 @Cacheable 一起使用時,它使用不包含您的參數的單獨上下文,以訪問相同的 class 的數據,您需要使用#root.methodName
https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/cache.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.