From ddb3c50e1d2fa8f523d962d2a9b699089bf348b4 Mon Sep 17 00:00:00 2001 From: "Yangkai.Shen" <237497819@qq.com> Date: Thu, 10 Oct 2019 10:29:41 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20=E8=B0=83=E6=95=B4=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E7=94=B1=E5=BA=8F=E5=88=97=E5=8C=96=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=20json=20=E6=A0=BC=E5=BC=8F=EF=BC=8C[ISSUE#57](https://github.?= =?UTF-8?q?com/xkcoding/spring-boot-demo/issues/57)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring-boot-demo-cache-redis/README.md | 14 +++++++++++++- .../cache/redis/config/RedisConfig.java | 17 +++++++++++++++++ .../cache/redis/service/UserServiceTest.java | 4 ++-- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/spring-boot-demo-cache-redis/README.md b/spring-boot-demo-cache-redis/README.md index 0dabb95..2f3d58e 100644 --- a/spring-boot-demo-cache-redis/README.md +++ b/spring-boot-demo-cache-redis/README.md @@ -148,6 +148,18 @@ public class RedisConfig { template.setConnectionFactory(redisConnectionFactory); return template; } + + /** + * 配置使用注解的时候缓存配置,默认是序列化反序列化的形式,加上此配置则为 json 形式 + */ + @Bean + public CacheManager cacheManager(RedisConnectionFactory factory) { + // 配置序列化 + RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); + RedisCacheConfiguration redisCacheConfiguration = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())); + + return RedisCacheManager.builder(factory).cacheDefaults(redisCacheConfiguration).build(); + } } ``` @@ -327,7 +339,7 @@ public class UserServiceTest extends SpringBootDemoCacheRedisApplicationTests { */ @Test public void getAfterSave() { - userService.saveOrUpdate(new User(4L, "user4")); + userService.saveOrUpdate(new User(4L, "测试中文")); User user = userService.get(4L); log.debug("【user】= {}", user); diff --git a/spring-boot-demo-cache-redis/src/main/java/com/xkcoding/cache/redis/config/RedisConfig.java b/spring-boot-demo-cache-redis/src/main/java/com/xkcoding/cache/redis/config/RedisConfig.java index cfd9404..da777d0 100644 --- a/spring-boot-demo-cache-redis/src/main/java/com/xkcoding/cache/redis/config/RedisConfig.java +++ b/spring-boot-demo-cache-redis/src/main/java/com/xkcoding/cache/redis/config/RedisConfig.java @@ -2,12 +2,17 @@ package com.xkcoding.cache.redis.config; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +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.connection.lettuce.LettuceConnectionFactory; 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.io.Serializable; @@ -41,4 +46,16 @@ public class RedisConfig { template.setConnectionFactory(redisConnectionFactory); return template; } + + /** + * 配置使用注解的时候缓存配置,默认是序列化反序列化的形式,加上此配置则为 json 形式 + */ + @Bean + public CacheManager cacheManager(RedisConnectionFactory factory) { + // 配置序列化 + RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); + RedisCacheConfiguration redisCacheConfiguration = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())); + + return RedisCacheManager.builder(factory).cacheDefaults(redisCacheConfiguration).build(); + } } diff --git a/spring-boot-demo-cache-redis/src/test/java/com/xkcoding/cache/redis/service/UserServiceTest.java b/spring-boot-demo-cache-redis/src/test/java/com/xkcoding/cache/redis/service/UserServiceTest.java index 9d15219..6175948 100644 --- a/spring-boot-demo-cache-redis/src/test/java/com/xkcoding/cache/redis/service/UserServiceTest.java +++ b/spring-boot-demo-cache-redis/src/test/java/com/xkcoding/cache/redis/service/UserServiceTest.java @@ -44,7 +44,7 @@ public class UserServiceTest extends SpringBootDemoCacheRedisApplicationTests { */ @Test public void getAfterSave() { - userService.saveOrUpdate(new User(4L, "user4")); + userService.saveOrUpdate(new User(4L, "测试中文")); User user = userService.get(4L); log.debug("【user】= {}", user); @@ -62,4 +62,4 @@ public class UserServiceTest extends SpringBootDemoCacheRedisApplicationTests { userService.delete(1L); } -} \ No newline at end of file +}