@Cacheable 拼接key的操作
我就廢話不多說瞭,大傢還是直接看代碼吧~
@Cacheable(value = "page_user",key ="T(String).valueOf(#page).concat('-').concat(#pageSize)",unless = "#result=null")//由於page是int型,concat要求變量必須為String,所以強轉一下 @Override public List<SysUserEntity> page(int page, int pageSize) { return userMapper.page(page,pageSize); }
補充:記一個spring緩存Cacheable註解key設置問題
spring的Cacheable註解用來設置緩存,其中的key屬性為spel表達式,如果要設置常量,則需要用”包裹,如:
@Cacheable(value = CacheConstant.APPLICATION,key = "'id_map'")
此處的”‘id_map'”代表key設置瞭一個常量,如果沒有”,則會報錯
org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field ‘lang_code_map’ cannot be found on object of type ‘org.springframework.cache.interceptor.CacheExpressionRootObject’ – maybe not public or not valid?
意思為在緩存表達式根對象上找不到指定屬性,說明如果不加”,則id_map作為屬性解析
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- Spring @Cacheable註解中key的使用詳解
- spring框架cacheAnnotation緩存註釋聲明解析
- 使用@CacheEvict清除指定下所有緩存
- 如何給Cacheable的key加上常量
- Spring @Cacheable指定失效時間實例