refactor: 从CacheConfig注解中移除keyGenerator,优化Redis配置

pull/875/head
Jie Zheng 2025-01-25 10:19:56 +08:00
parent 4e4ca20828
commit 41ccc1f6e6
5 changed files with 17 additions and 14 deletions

View File

@ -19,8 +19,9 @@ import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONFactory;
import com.alibaba.fastjson2.JSONWriter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.codec.digest.MurmurHash3;
import org.springframework.cache.Cache;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.CacheErrorHandler;
import org.springframework.cache.interceptor.KeyGenerator;
@ -47,7 +48,10 @@ import java.util.Map;
@Slf4j
@Configuration
@EnableCaching
public class RedisConfiguration {
public class RedisConfiguration extends CachingConfigurerSupport {
// 自动识别json对象白名单配置仅允许解析的包名范围越小越安全
private static final String[] WHITELIST_STR = {"me.zhengjie" };
/**
* redis 2
@ -71,7 +75,9 @@ public class RedisConfiguration {
template.setValueSerializer(fastJsonRedisSerializer);
template.setHashValueSerializer(fastJsonRedisSerializer);
// 设置fastJson的序列化白名单
JSONFactory.getDefaultObjectReaderProvider().addAutoTypeAccept("me.zhengjie");
for (String pack : WHITELIST_STR) {
JSONFactory.getDefaultObjectReaderProvider().addAutoTypeAccept(pack);
}
// key的序列化采用StringRedisSerializer
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
@ -93,9 +99,7 @@ public class RedisConfiguration {
}
/**
* key使keyGenerator
* 使SimpleKeyGeneratorkey
* CachingConfigurerSupport PR
* key
*/
@Bean
public KeyGenerator keyGenerator() {
@ -114,8 +118,8 @@ public class RedisConfiguration {
}
// 转为JSON字符串
String jsonString = JSON.toJSONString(container);
// 做SHA256 Hash计算得到一个SHA256摘要作为Key
return DigestUtils.sha256Hex(jsonString);
// 使用 MurmurHash 生成 hash
return Integer.toHexString(MurmurHash3.hash32x86(jsonString.getBytes()));
};
}

View File

@ -36,7 +36,7 @@ public class WebSocketServer {
/**
* concurrent线SetMyWebSocket
*/
private static final CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<WebSocketServer>();
private static final CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<>();
/**
*
@ -85,8 +85,7 @@ public class WebSocketServer {
@OnError
public void onError(Session session, Throwable error) {
log.error("发生错误");
error.printStackTrace();
log.error("发生错误", error);
}
/**
*

View File

@ -38,7 +38,7 @@ import java.util.Optional;
*/
@Service
@RequiredArgsConstructor
@CacheConfig(cacheNames = "aliPay", keyGenerator = "keyGenerator")
@CacheConfig(cacheNames = "aliPay")
public class AliPayServiceImpl implements AliPayService {
private final AliPayRepository alipayRepository;

View File

@ -37,7 +37,7 @@ import java.util.Optional;
*/
@Service
@RequiredArgsConstructor
@CacheConfig(cacheNames = "email", keyGenerator = "keyGenerator")
@CacheConfig(cacheNames = "email")
public class EmailServiceImpl implements EmailService {
private final EmailRepository emailRepository;

View File

@ -51,7 +51,7 @@ import java.util.*;
*/
@Service
@RequiredArgsConstructor
@CacheConfig(cacheNames = "qiNiu", keyGenerator = "keyGenerator")
@CacheConfig(cacheNames = "qiNiu")
public class QiNiuServiceImpl implements QiNiuService {
private final QiNiuConfigRepository qiNiuConfigRepository;