1.在常量類中定義商品緩存空間和商品緩存KEY
public interface CacheConstants {/*** Goods Cache Name*/String QNA_GOODS_CACHE = "qna-goods";/*** Goods Cache key*/String QNA_GOODS_CACHE_KEY = "qna_goods:";/*** Order Cache Name*/String QNA_ORDER_CACHE = "qna-order";/*** Order Cache Key*/String QNA_ORDER_CACHE_KEY = "qna_order:";}
2.Cacheable中如何使用
1.引用靜態常量
用 T(全類名).靜態常量名 格式引用類的靜態成員(T() 是 SpEL 中引用類的語法)。
例如:CacheConstants 類的包路徑是 com.example.constants,則寫成 T(com.example.constants.CacheConstants).QNA_GOODS_CACHE_KEY。
2.字符串拼接
常量與參數之間必須用 + 連接,確保 SpEL 正確解析為拼接后的字符串(如 qna_goods:123,其中 123 是 goodsId 的值)。
3.簡化寫法(若常量是固定前綴)
若 QNA_GOODS_CACHE_KEY 本身就是類似 qna_goods: 的固定前綴,也可以直接在表達式中寫死前綴(不推薦,不利于維護):
key = "'qna_goods:' + #goodsId" // 直接寫死前綴,避免引用類
3.使用方法
import org.springframework.cache.annotation.Cacheable;// 正確寫法:引用靜態常量 + 拼接參數
@Cacheable(value = CacheConstants.QNA_GOODS_CACHE,key = "T(com.yourpackage.CacheConstants).QNA_GOODS_CACHE_KEY + #goodsId"
)
public Goods getGoods(Long goodsId) {// 業務邏輯
}