java keygenerator_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前缀,用于区分不同项目的缓存,建议每个项目单独设置
@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;
}
}
java keygenerator_spring-cache -KeyGenerator自定义相关推荐
- java中Cache缓存的使用
java中Cache缓存 1.JSR107 缓存的整体架构: 2.SpringBoot的缓存抽象 几个重要概念以及缓存注解 其中想要使用缓存直接,就必须开启**@EnableCaching**注解 开 ...
- Java之——Spring AOP自定义注解实现日志管理
转载请注明出处:https://blog.csdn.net/l1028386804/article/details/80295737 1.定义日志类SystemLog package io.mykit ...
- Java httpClient中实现自定义DNS服务器地址配置
这个故事从一个小的需求开始. 在知乎编辑器中,链接插入以后可以选择转化为一个链接卡片,用户体验太棒了.这么好的点子,我们必须学(chao)习(xi)过来啊. 这个事情就这么被安排给了我们的前端同学.. ...
- java sessionstate_在Java Web开发中自定义Session
Session在存储安全性要求较高的会话信息方面是必不可少的,对于分布式Web应用自定义Session支持独立的状态服务器或集群是必须的.本文就来教大家如何在Java Web开发中自定义Session ...
- 怎么在java中创建一个自定义的collector
文章目录 简介 Collector介绍 自定义Collector 总结 怎么在java中创建一个自定义的collector 简介 在之前的java collectors文章里面,我们讲到了stream ...
- Java高级进阶:自定义ClassLoader
转载自 Java高级进阶:自定义ClassLoader 假如我们的类不在classpath下,而我们又想读取一个自定义的目录下的class,如果做呢? 读取自定义目录的类 示例读取c:/test/co ...
- c++中的new_怎么在java中创建一个自定义的collector
简介 在之前的java collectors文章里面,我们讲到了stream的collect方法可以调用Collectors里面的toList()或者toMap()方法,将结果转换为特定的集合类. 今 ...
- java注解 源码_详解Java注解教程及自定义注解
详解Java注解教程及自定义注解 更新时间:2016-02-26 11:47:06 作者:佚名 我要评论(0) Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个 ...
- 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单
我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...
- java 可以直接当自定义标示符_第2章 Java基本语法.ppt
<第2章 Java基本语法.ppt>由会员分享,可在线阅读,更多相关<第2章 Java基本语法.ppt(55页珍藏版)>请在人人文库网上搜索. 1.第2章了解Java基本语法, ...
最新文章
- a-awk 计算数值最大,最小,平均值并保留指定位数
- 避免成为调包侠,从数学角度再看深度学习
- Java使用jfreechart画饼图_jfreechart应用_例题_生成饼状图(展示,生成文件,WEB项目)_可以直接运行...
- linux 大文件切割和合并 tar分割和合并
- 指令发送没反应_如何判断网络故障的原因?7个指令,教你逐步排查!
- python不需要缩进的代码顶行编写_python程序快速缩进多行代码方法总结
- linux 1080ti显卡黑屏,Ubuntu 17.04+GTX1080Ti 安装辛酸之路
- 有了这套模板,女朋友再也不用担心我刷不动 LeetCode 了
- 找出现实中符合这三种模式的互联网产品
- pandas之时间数据
- 图形学opengl实验二-桌子的矩阵变换
- 吴恩达机器学习视频学习笔记(3)
- C#/.Net 的托管堆和垃圾回收
- 请求转发 tomcat 404错误
- 利用Python3中turtle的绘制超立方体。
- 数字图像处理-第一章
- js根据邮箱账号跳转登录邮箱地址
- 实习--广东电信有限公司汕头市分公司讲座
- js Web APIs
- 今天是印度已故心算大师Shakuntala Devi的84岁诞辰