Browse Source

添加cache manager

tuonina 5 years ago
parent
commit
0bf89b9766

+ 25 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/config/CustomCoreConfiguration.kt

@@ -12,16 +12,26 @@ import org.springframework.beans.factory.annotation.Qualifier
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
 import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication
 import org.springframework.boot.context.properties.EnableConfigurationProperties
+import org.springframework.cache.CacheManager
 import org.springframework.context.ApplicationContext
 import org.springframework.context.ApplicationContextAware
 import org.springframework.context.annotation.Bean
 import org.springframework.context.annotation.Configuration
 import org.springframework.context.annotation.Primary
+import org.springframework.data.redis.cache.CacheKeyPrefix
+import org.springframework.data.redis.cache.RedisCacheConfiguration
+import org.springframework.data.redis.cache.RedisCacheConfiguration.registerDefaultConverters
+import org.springframework.data.redis.cache.RedisCacheManager
+import org.springframework.data.redis.connection.RedisConnectionFactory
+import org.springframework.data.redis.serializer.RedisSerializationContext
+import org.springframework.data.redis.serializer.RedisSerializer
+import org.springframework.format.support.DefaultFormattingConversionService
 import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder
 import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
 import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter
 import org.springframework.web.server.WebFilter
 import java.text.SimpleDateFormat
+import java.time.Duration
 
 
 /**
@@ -106,6 +116,21 @@ class CustomCoreConfiguration : ApplicationContextAware {
         }
     }
 
+
+    @Primary
+    @Bean("cacheManager")
+    fun cacheManager(connectionFactory: RedisConnectionFactory): CacheManager {
+        val conversionService = DefaultFormattingConversionService()
+        registerDefaultConverters(conversionService)
+        val cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
+                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.json()))
+                .prefixKeysWith("TUON")
+        return RedisCacheManager.builder(connectionFactory)
+                .cacheDefaults(cacheConfiguration)
+                .build()
+    }
+
+
     override fun setApplicationContext(applicationContext: ApplicationContext) {
         AppUtils.utils().setContext(applicationContext)
     }