spring-cache -KeyGenerator自定義

接口KeyGenerator

image.png

要實現自定義,要實現spring提供的接口KeyGenerator
package org.springframework.cache.interceptor;

helper

  • fastjson

public class JsonHelper {


    /**
     * Java對象序列化為JSON字符串
     *
     * @param obj Java對象
     * @return json字符串
     */
    public static String toJson(Object obj) {
        return JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue);
    }
}

  • beanHelper
package com.ghgcn.mysb.chapter03.helper;

import org.springframework.util.ClassUtils;

import java.net.URI;
import java.net.URL;
import java.util.Date;
import java.util.Locale;

public class BeanHelper {
    /**
     * 判斷是否是簡單值類型.包括:基礎數據類型块饺、CharSequence洞拨、Number欣范、Date沽损、URL巾表、URI袖外、Locale史隆、Class;
     *
     * @param clazz
     * @return
     */
    public static boolean isSimpleValueType(Class<?> clazz) {
        return (ClassUtils.isPrimitiveOrWrapper(clazz) || clazz.isEnum() || CharSequence.class.isAssignableFrom(clazz)
                || Number.class.isAssignableFrom(clazz) || Date.class.isAssignableFrom(clazz) || URI.class == clazz
                || URL.class == clazz || Locale.class == clazz || Class.class == clazz);
    }
}

SpringCacheKeyGenerator

package com.ghgcn.mysb.chapter03.support;

import com.ghgcn.mysb.chapter03.helper.BeanHelper;
import com.ghgcn.mysb.chapter03.helper.JsonHelper;
import org.springframework.cache.interceptor.KeyGenerator;

import java.lang.reflect.Method;
@Component //標記為組件
public class SpringCacheKeyGenerator implements KeyGenerator {

    private final static int NO_PARAM_KEY = 0;
    private String keyPrefix = "jf";// key前綴,用于區(qū)分不同項目的緩存曼验,建議每個項目單獨設置



    @Override
    public Object generate(Object target, Method method, Object... params) {

        char sp = ':';
        StringBuilder strBuilder = new StringBuilder(30);
        strBuilder.append(keyPrefix);
        strBuilder.append(sp);
        // 類名
        strBuilder.append(target.getClass().getSimpleName());
        strBuilder.append(sp);
        // 方法名
        strBuilder.append(method.getName());
        strBuilder.append(sp);
        if (params.length > 0) {
            // 參數值
            for (Object object : params) {
                if (BeanHelper.isSimpleValueType(object.getClass())) {
                    strBuilder.append(object);
                } else {
                    strBuilder.append(JsonHelper.toJson(object).hashCode());
                }
            }
        } else {
            strBuilder.append(NO_PARAM_KEY);
        }
        return strBuilder.toString();
    }



    public String getKeyPrefix() {
        return keyPrefix;
    }

    public void setKeyPrefix(String keyPrefix) {
        this.keyPrefix = keyPrefix;
    }
}

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末泌射,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子鬓照,更是在濱河造成了極大的恐慌熔酷,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件豺裆,死亡現場離奇詭異拒秘,居然都是意外死亡,警方通過查閱死者的電腦和手機留储,發(fā)現死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門翼抠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人获讳,你說我怎么就攤上這事阴颖。” “怎么了丐膝?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵量愧,是天一觀的道長。 經常有香客問我帅矗,道長偎肃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任浑此,我火速辦了婚禮累颂,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己紊馏,他們只是感情好料饥,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著朱监,像睡著了一般岸啡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赫编,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天巡蘸,我揣著相機與錄音,去河邊找鬼擂送。 笑死悦荒,一個胖子當著我的面吹牛,可吹牛的內容都是我干的团甲。 我是一名探鬼主播逾冬,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼黍聂,長吁一口氣:“原來是場噩夢啊……” “哼躺苦!你這毒婦竟也來了?” 一聲冷哼從身側響起产还,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤匹厘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后脐区,有當地人在樹林里發(fā)現了一具尸體愈诚,經...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年牛隅,在試婚紗的時候發(fā)現自己被綠了炕柔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡媒佣,死狀恐怖匕累,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情默伍,我是刑警寧澤欢嘿,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站也糊,受9級特大地震影響炼蹦,放射性物質發(fā)生泄漏。R本人自食惡果不足惜狸剃,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一掐隐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钞馁,春花似錦虑省、人聲如沸斗搞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽僻焚。三九已至,卻和暖如春膝擂,著一層夾襖步出監(jiān)牢的瞬間虑啤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工架馋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留狞山,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓叉寂,卻偏偏與公主長得像萍启,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子屏鳍,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內容