亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java Spring-Cache key配置注意事項介紹

2024-07-13 10:13:05
字體:
來源:轉載
供稿:網友

為了提升項目的并發性能,考慮引入本地內存Cache,對:外部數據源訪問、Restful API調用、可重用的復雜計算 等3種類型的函數處理結果進行緩存。目前采用的是spring Cache的@Cacheable注解方式,緩存具體實現選取的是Guava Cache。
具體緩存的配置此處不再介紹,重點對于key的配置進行說明:

1、基本形式

@Cacheable(value="cacheName", key"#id")  public ResultDTO method(int id);  

2、組合形式

@Cacheable(value="cacheName", key"T(String).valueOf(#name).concat('-').concat(#password))  public ResultDTO method(int name, String password);  

3、對象形式

@Cacheable(value="cacheName", key"#user.id) public ResultDTO method(User user); 

4、自定義key生成器

@Cacheable(value="gomeo2oCache", keyGenerator = "keyGenerator") public ResultDTO method(User user); 

注意:Spring默認的SimpleKeyGenerator是不會將函數名組合進key中的

如下:

@Component public class CacheTestImpl implements CacheTest {   @Cacheable("databaseCache")   public Long test1()   { return 1L; }   @Cacheable("databaseCache")   public Long test2()   { return 2L; }   @Cacheable("databaseCache")   public Long test3()   { return 3L; }   @Cacheable("databaseCache")   public String test4()   { return "4"; } } 

我們期望輸出:

1 2 3 4

實際卻輸出:

1 1 1 ClassCastException: java.lang.Long cannot be cast to java.lang.String 

此外,原子類型的數組,直接作為key使用也是不會生效的

為了解決上述2個問題,自定義了一個KeyGenerator如下:

class CacheKeyGenerator implements KeyGenerator {   // custom cache key   public static final int NO_PARAM_KEY = 0;   public static final int NULL_PARAM_KEY = 53;   @Override   public Object generate(Object target, Method method, Object... params) {     StringBuilder key = new StringBuilder();     key.append(target.getClass().getSimpleName()).append(".").append(method.getName()).append(":");     if (params.length == 0) {       return key.append(NO_PARAM_KEY).toString();     }     for (Object param : params) {       if (param == null) {         log.warn("input null param for Spring cache, use default key={}", NULL_PARAM_KEY);         key.append(NULL_PARAM_KEY);       } else if (ClassUtils.isPrimitiveArray(param.getClass())) {         int length = Array.getLength(param);         for (int i = 0; i < length; i++) {           key.append(Array.get(param, i));           key.append(',');         }       } else if (ClassUtils.isPrimitiveOrWrapper(param.getClass()) || param instanceof String) {         key.append(param);       } else {         log.warn("Using an object as a cache key may lead to unexpected results. " +             "Either use @Cacheable(key=..) or implement CacheKey. Method is " + target.getClass() + "#" + method.getName());         key.append(param.hashCode());       }       key.append('-');     }     String finalKey = key.toString();     long cacheKeyHash = Hashing.murmur3_128().hashString(finalKey, Charset.defaultCharset()).asLong();     log.debug("using cache key={} hashCode={}", finalKey, cacheKeyHash);     return key.toString();   } } 

采用此方式后可以解決:多參數、原子類型數組、方法名識別 等問題

總結

以上就是本文關于Java Spring-Cache key配置注意事項介紹的全部內容,如有不足之處,歡迎留言指出,小編會及時回復大家并修正,給廣大編程愛好者提供更好的閱讀體驗,希望對大家有所幫助。在此也非常希望朋友們對本站多多支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91亚洲国产成人久久精品网站| 亚洲精品中文字| 中文欧美日本在线资源| 亚洲一区亚洲二区| 97视频在线看| 久久久www成人免费精品| 97在线观看视频| 欧美专区福利在线| 一本大道久久加勒比香蕉| 另类天堂视频在线观看| 欧美日韩激情视频8区| 久久欧美在线电影| 亚洲精品影视在线观看| 久久精品国产v日韩v亚洲| 欧美亚洲成人xxx| 在线a欧美视频| 久久影院资源网| 91视频免费网站| 国产精品美腿一区在线看| 欧美裸体男粗大视频在线观看| 亚洲欧美综合精品久久成人| 欧美日韩在线视频一区二区| 一区二区三区美女xx视频| 日韩在线观看成人| 亚洲精品视频播放| 欧美视频裸体精品| 国产一区二区三区在线看| 国产精品香蕉国产| 亚洲精品久久久一区二区三区| 日本一本a高清免费不卡| 欧美日韩成人在线视频| 亚洲成人1234| 成人在线小视频| 久久夜色精品亚洲噜噜国产mv| 日本一区二三区好的精华液| 在线免费观看羞羞视频一区二区| 欧美黑人一级爽快片淫片高清| 久久久国产精品亚洲一区| 久久精品精品电影网| 欧美色欧美亚洲高清在线视频| www欧美xxxx| 精品国产一区二区三区久久狼黑人| 欧美色道久久88综合亚洲精品| 亚洲精品福利在线| 亚洲综合在线小说| 欧美黄色www| 欧美巨乳美女视频| 国产91在线高潮白浆在线观看| 日韩综合视频在线观看| 97免费视频在线播放| 欧美黄色成人网| 日韩免费精品视频| 欧美不卡视频一区发布| 精品国产乱码久久久久久虫虫漫画| 亚洲人成在线观看网站高清| 成人国产精品免费视频| 国产成人精品电影| 91在线免费网站| 九九热这里只有在线精品视| 欧美激情亚洲激情| 亚洲成人三级在线| 久久影视电视剧免费网站清宫辞电视| 欧美日韩美女在线| 91精品久久久久久久久青青| 中文字幕亚洲一区| 亚洲国产精品va| xxxxxxxxx欧美| 亚洲国产精品网站| 亚洲国产三级网| 日韩欧美国产激情| 国产精品偷伦免费视频观看的| 日韩av黄色在线观看| 国产成+人+综合+亚洲欧美丁香花| 欧美整片在线观看| 97视频在线看| 久久99精品国产99久久6尤物| 久久久久久久久久久亚洲| 日本久久精品视频| 91精品视频播放| 国产精品久久久久秋霞鲁丝| 中文字幕成人精品久久不卡| 国产精品91视频| 欧美激情一区二区三区久久久| 国产精品免费久久久久影院| 日本高清不卡的在线| 欧美大片在线免费观看| 国产成人精品免高潮费视频| 久久精品欧美视频| 国产欧美精品一区二区| 欧美孕妇孕交黑巨大网站| 日韩最新免费不卡| 成人国产亚洲精品a区天堂华泰| 国产日韩一区在线| 91极品视频在线| 成人欧美一区二区三区在线| 国产亚洲精品综合一区91| 国产一区二区三区欧美| 欧美大片第1页| 日韩av电影在线免费播放| 精品国产欧美成人夜夜嗨| 在线视频一区二区| 欧美电影免费观看高清| 国产欧美一区二区三区视频| 欧美福利视频在线| 欧美影院在线播放| 亚洲第一精品久久忘忧草社区| 在线精品国产欧美| 性色av一区二区三区在线观看| 日韩美女主播视频| 亚洲欧洲日本专区| 欧美在线国产精品| 久久久久久久亚洲精品| 狠狠久久五月精品中文字幕| 欧美最猛性xxxxx免费| 久久91超碰青草是什么| 欧美精品久久久久久久免费观看| 在线观看91久久久久久| 国产欧美在线视频| 久久精品中文字幕| 国产精品成熟老女人| 精品伊人久久97| 九九热精品在线| 久久精品久久久久| 中文字幕免费国产精品| 国内精品视频在线| 国产成人久久精品| 久热在线中文字幕色999舞| 亚洲国产福利在线| 欧美日韩亚洲网| 色综合色综合久久综合频道88| 国产精品黄色av| 欧美一区二区三区精品电影| 久久人人爽人人| 色狠狠久久aa北条麻妃| 亚洲精品乱码久久久久久按摩观| 伊人男人综合视频网| 国产精品免费电影| 亚洲日韩欧美视频| 在线播放国产一区二区三区| 日韩电影在线观看永久视频免费网站| 色www亚洲国产张柏芝| 国产精品丝袜高跟| 亚洲精品日韩欧美| 成人天堂噜噜噜| 国产在线播放不卡| 亚洲视屏在线播放| 欧美亚洲另类激情另类| 日韩一区二区精品视频| 亚洲国产精品网站| 国产一区玩具在线观看| 日韩在线欧美在线| 欧美亚洲成人xxx| 国内精品视频久久| 亚洲一区二区久久久久久久| 欧美日韩性视频在线| 久久精品一区中文字幕| 精品成人国产在线观看男人呻吟| 久久全国免费视频| 亚洲色图日韩av| 亚洲国产精品一区二区久| 日韩在线免费视频观看| 国产精品高清免费在线观看| 岛国视频午夜一区免费在线观看| 亚洲精品一区二三区不卡|