package com.artfess.redis.util; import com.artfess.base.util.JsonUtil; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.util.Assert; import java.nio.charset.Charset; /** * 必须重写序列化器,否则@Cacheable注解的key会报类型转换错误 * * @company 阿特菲斯信息技术有限公司 * @author heyifan * @email heyf@jee-soft.cn * @date 2020年6月17日 */ public class StringRedisSerializer implements RedisSerializer { private final Charset charset; private final String target = "\""; private final String replacement = ""; public StringRedisSerializer() { this(Charset.forName("UTF8")); } public StringRedisSerializer(Charset charset) { Assert.notNull(charset, "Charset must not be null!"); this.charset = charset; } @Override public String deserialize(byte[] bytes) { return (bytes == null ? null : new String(bytes, charset)); } @Override public byte[] serialize(Object object) { String string = JsonUtil.toJsonString(object); if (string == null) { return null; } string = string.replace(target, replacement); return string.getBytes(charset); } }