|
@@ -1,6 +1,5 @@
|
|
|
package com.elab.redis.config;
|
|
|
|
|
|
-import com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer;
|
|
|
import com.elab.redis.CacheTemplate;
|
|
|
import com.elab.redis.annotation.CacheLoopSubmit;
|
|
|
import com.elab.redis.annotation.CacheReadLock;
|
|
@@ -8,22 +7,18 @@ import com.elab.redis.annotation.CacheWriteLock;
|
|
|
import com.elab.redis.interceptor.BeanFactoryCacheAttributeSourceAdvisor;
|
|
|
import com.elab.redis.interceptor.CacheAttributeSourcePointcut;
|
|
|
import com.elab.redis.interceptor.CacheInterceptor;
|
|
|
+import com.elab.redis.redisson.DefaultRedissonSpringCacheManager;
|
|
|
import com.elab.redis.spring.data.RedisTemplateDecorator;
|
|
|
import org.redisson.api.RedissonClient;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.config.BeanDefinition;
|
|
|
import org.springframework.cache.CacheManager;
|
|
|
import org.springframework.context.annotation.*;
|
|
|
-import org.springframework.data.redis.cache.RedisCacheConfiguration;
|
|
|
-import org.springframework.data.redis.cache.RedisCacheManager;
|
|
|
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
|
|
|
-import org.springframework.data.redis.serializer.RedisSerializationContext;
|
|
|
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
|
|
|
|
|
-import java.time.Duration;
|
|
|
-
|
|
|
/**
|
|
|
* 缓存自动配置
|
|
|
*
|
|
@@ -67,7 +62,7 @@ public class CacheAutoConfiguration {
|
|
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
|
|
public BeanFactoryCacheAttributeSourceAdvisor transactionAdvisor() {
|
|
|
BeanFactoryCacheAttributeSourceAdvisor advisor = new BeanFactoryCacheAttributeSourceAdvisor();
|
|
|
- advisor.setAdvice(transactionInterceptor());
|
|
|
+ advisor.setAdvice(cacheInterceptor());
|
|
|
advisor.setPointcut(cacheAttributeSourcePointcut());
|
|
|
return advisor;
|
|
|
}
|
|
@@ -84,29 +79,30 @@ public class CacheAutoConfiguration {
|
|
|
|
|
|
@Bean
|
|
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
|
|
- public CacheInterceptor transactionInterceptor() {
|
|
|
+ public CacheInterceptor cacheInterceptor() {
|
|
|
CacheInterceptor interceptor = new CacheInterceptor();
|
|
|
return interceptor;
|
|
|
}
|
|
|
|
|
|
- // @Bean
|
|
|
-// public CacheManager cacheManager(RedissonClient redissonClient, ElabRedisProperties elabRedisProperties) {
|
|
|
-// // 统一的注解缓存失效配置
|
|
|
-// DefaultRedissonSpringCacheManager defaultRedissonSpringCacheManager = new DefaultRedissonSpringCacheManager(redissonClient);
|
|
|
-// defaultRedissonSpringCacheManager.setCacheConfig(elabRedisProperties.getCacheConfig());
|
|
|
-// return defaultRedissonSpringCacheManager;
|
|
|
-// }
|
|
|
@Bean
|
|
|
- public CacheManager cacheManager(RedisConnectionFactory connectionFactory, ElabRedisProperties redisProperties) {
|
|
|
+ public CacheManager cacheManager(RedissonClient redissonClient, ElabRedisProperties elabRedisProperties) {
|
|
|
// 统一的注解缓存失效配置
|
|
|
- RedisSerializationContext.SerializationPair<String> keySerializationPair = RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer());
|
|
|
- RedisSerializationContext.SerializationPair<Object> valueSerialization = RedisSerializationContext.SerializationPair.fromSerializer(new GenericFastJsonRedisSerializer());
|
|
|
- RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig().serializeKeysWith(keySerializationPair)
|
|
|
- .serializeValuesWith(valueSerialization).computePrefixWith(cacheName -> redisProperties.getPrefixWith
|
|
|
- () + cacheName)
|
|
|
- .entryTtl
|
|
|
- (Duration
|
|
|
- .ofMinutes(redisProperties.getTtl()));
|
|
|
- return RedisCacheManager.builder(connectionFactory).cacheDefaults(configuration).build();
|
|
|
+ DefaultRedissonSpringCacheManager defaultRedissonSpringCacheManager = new DefaultRedissonSpringCacheManager(redissonClient);
|
|
|
+ // defaultRedissonSpringCacheManager.setCacheConfig(elabRedisProperties.getCacheConfig());
|
|
|
+
|
|
|
+ return defaultRedissonSpringCacheManager;
|
|
|
}
|
|
|
+// @Bean
|
|
|
+// public CacheManager cacheManager(RedisConnectionFactory connectionFactory, ElabRedisProperties redisProperties) {
|
|
|
+// // 统一的注解缓存失效配置
|
|
|
+// RedisSerializationContext.SerializationPair<String> keySerializationPair = RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer());
|
|
|
+// RedisSerializationContext.SerializationPair<Object> valueSerialization = RedisSerializationContext.SerializationPair.fromSerializer(new GenericFastJsonRedisSerializer());
|
|
|
+// RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig().serializeKeysWith(keySerializationPair)
|
|
|
+// .serializeValuesWith(valueSerialization).computePrefixWith(cacheName -> redisProperties.getPrefixWith
|
|
|
+// () + cacheName)
|
|
|
+// .entryTtl
|
|
|
+// (Duration
|
|
|
+// .ofMinutes(redisProperties.getTtl()));
|
|
|
+// return RedisCacheManager.builder(connectionFactory).cacheDefaults(configuration).build();
|
|
|
+// }
|
|
|
}
|