From c2a299979970a15c1905bc7f8b61b351d12041e3 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 29 Jan 2018 13:55:05 +0100 Subject: [PATCH] Use proper classloader for value serialization Closes gh-11822 --- .../cache/RedisCacheConfiguration.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/RedisCacheConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/RedisCacheConfiguration.java index 8fd0ddde2f8..34658089bb0 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/RedisCacheConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/RedisCacheConfiguration.java @@ -29,9 +29,12 @@ import org.springframework.cache.CacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ResourceLoader; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.cache.RedisCacheManager.RedisCacheManagerBuilder; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializationContext.SerializationPair; /** * Redis cache configuration. @@ -63,9 +66,10 @@ class RedisCacheConfiguration { } @Bean - public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { + public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory, + ResourceLoader resourceLoader) { RedisCacheManagerBuilder builder = RedisCacheManager - .builder(redisConnectionFactory).cacheDefaults(determineConfiguration()); + .builder(redisConnectionFactory).cacheDefaults(determineConfiguration(resourceLoader.getClassLoader())); List cacheNames = this.cacheProperties.getCacheNames(); if (!cacheNames.isEmpty()) { builder.initialCacheNames(new LinkedHashSet<>(cacheNames)); @@ -73,13 +77,16 @@ class RedisCacheConfiguration { return this.customizerInvoker.customize(builder.build()); } - private org.springframework.data.redis.cache.RedisCacheConfiguration determineConfiguration() { + private org.springframework.data.redis.cache.RedisCacheConfiguration determineConfiguration( + ClassLoader classLoader) { if (this.redisCacheConfiguration != null) { return this.redisCacheConfiguration; } Redis redisProperties = this.cacheProperties.getRedis(); org.springframework.data.redis.cache.RedisCacheConfiguration config = org.springframework.data.redis.cache.RedisCacheConfiguration .defaultCacheConfig(); + config = config.serializeValuesWith(SerializationPair.fromSerializer( + new JdkSerializationRedisSerializer(classLoader))); if (redisProperties.getTimeToLive() != null) { config = config.entryTtl(redisProperties.getTimeToLive()); }