如何給Cacheable的key加上常量
Cacheable的key加上常量
背景
由於緩存的註解有類似的前綴,所以抽取出常量。
public static final String KEY_CERT_TYPE_CODE_PREFIX = "ec_cert_type:cert_type_code:"; @Override @Cacheable(key = KEY_CERT_TYPE_CODE_PREFIX + "+#code") public EcCertType loadCertTypeByCode(String code) { // something return type; }
但是使用時,報錯:
EL1041E: After parsing a valid expression, there is still more data in the expression
經修改,給常量加上單引號,使:不被SpEL解析,解決。
public static final String KEY_CERT_TYPE_CODE_PREFIX = "'ec_cert_type:cert_type_code:'"; @Override @Cacheable(key = KEY_CERT_TYPE_CODE_PREFIX + "+#code") public EcCertType loadCertTypeByCode(String code) { // something return type; }
springcache key的定義方式
1.不指定key,使用默認key生成器
使用默認key生成器的話,緩存的對象需要實現toString()方法,裡面拼接自己想要作為key的字段。
調用查詢接口之後,緩存中的key如下:
其中TRANSFORMERS-ACT_DICT-KEY是定義的value值,表示放到哪個緩存中。
2.指定key值
運行後key值如下
此時是以傳遞過來的Student對象中的id值作為key。
3.自定義key生成器
引用自定義的生成器
key值如下:
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- @Cacheable 拼接key的操作
- SpringBoot如何使用@Cacheable進行緩存與取值
- Spring緩存註解@Cacheable @CacheEvit @CachePut使用介紹
- springboot通過spel結合aop實現動態傳參的案例
- SpringBoot2.X整合Spring-Cache緩存開發的實現