@@ -4,12 +4,11 @@ import com.fasterxml.jackson.databind.DeserializationFeature
44import com.fasterxml.jackson.databind.ObjectMapper
55import io.github.truenine.composeserver.consts.ICacheNames
66import io.github.truenine.composeserver.depend.jackson.autoconfig.JacksonAutoConfiguration
7- import io.github.truenine.composeserver.slf4j
7+ import io.github.truenine.composeserver.logger
88import java.time.Duration
99import org.springframework.beans.factory.annotation.Qualifier
1010import org.springframework.context.annotation.Bean
1111import org.springframework.context.annotation.Configuration
12- import org.springframework.context.annotation.Primary
1312import org.springframework.data.redis.cache.RedisCacheConfiguration
1413import org.springframework.data.redis.cache.RedisCacheManager
1514import org.springframework.data.redis.connection.RedisConnectionFactory
@@ -18,8 +17,6 @@ import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSeriali
1817import org.springframework.data.redis.serializer.RedisSerializationContext
1918import org.springframework.data.redis.serializer.StringRedisSerializer
2019
21- private val log = slf4j<RedisJsonSerializerAutoConfiguration >()
22-
2320/* *
2421 * redis 缓存组件配置
2522 *
@@ -28,6 +25,11 @@ private val log = slf4j<RedisJsonSerializerAutoConfiguration>()
2825 */
2926@Configuration
3027class RedisJsonSerializerAutoConfiguration (@Qualifier(JacksonAutoConfiguration .NON_IGNORE_OBJECT_MAPPER_BEAN_NAME ) objectMapper : ObjectMapper ) {
28+ companion object {
29+ @JvmStatic private val log = logger<RedisJsonSerializerAutoConfiguration >()
30+ private const val VIRTUAL_THREAD_REDIS_FACTORY_BEAN_NAME = " redisConnectionFactoryVirtualThreads"
31+ }
32+
3133 private val jsr =
3234 GenericJackson2JsonRedisSerializer (objectMapper).apply { configure { it.configure(DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES , false ) } }
3335
@@ -38,10 +40,9 @@ class RedisJsonSerializerAutoConfiguration(@Qualifier(JacksonAutoConfiguration.N
3840 .serializeValuesWith(RedisSerializationContext .SerializationPair .fromSerializer(jsr))
3941 .disableCachingNullValues()
4042
41- @Primary
4243 @Bean(name = [ICacheNames .IRedis .HANDLE ])
43- fun customRedisJsonSerializable (factory : RedisConnectionFactory ): RedisTemplate <String , * > {
44- log.trace(" 注册 redisTemplate factory = {}" , factory)
44+ fun customRedisJsonSerializable (@Qualifier( VIRTUAL_THREAD_REDIS_FACTORY_BEAN_NAME ) factory : RedisConnectionFactory ): RedisTemplate <String , * > {
45+ log.trace(" register redisTemplate factory: {}" , factory)
4546 val rt = RedisTemplate <String , Any ?>()
4647 rt.setDefaultSerializer(jsr)
4748 rt.hashKeySerializer = srs
@@ -54,8 +55,8 @@ class RedisJsonSerializerAutoConfiguration(@Qualifier(JacksonAutoConfiguration.N
5455 }
5556
5657 @Bean(name = [ICacheNames .IRedis .CACHE_MANAGER ])
57- fun cacheManager2h (factory : RedisConnectionFactory ): RedisCacheManager {
58- log.debug(" 注册 RedisCacheManager , factory = {}" , factory)
58+ fun cacheManager2h (@Qualifier( VIRTUAL_THREAD_REDIS_FACTORY_BEAN_NAME ) factory : RedisConnectionFactory ): RedisCacheManager {
59+ log.debug(" register RedisCacheManager , factory: {}" , factory)
5960 return asCacheConfig(factory)
6061 }
6162
@@ -83,7 +84,7 @@ class RedisJsonSerializerAutoConfiguration(@Qualifier(JacksonAutoConfiguration.N
8384 ICacheNames .FOREVER to createRedisCacheConfig(Duration .ZERO ),
8485 )
8586
86- private fun asCacheConfig (factory : RedisConnectionFactory ? ): RedisCacheManager {
87- return RedisCacheManager .builder(factory!! ).cacheDefaults(cacheManagerConfig.entryTtl(Duration .ofHours(1 ))).withInitialCacheConfigurations(cacheMap).build()
87+ private fun asCacheConfig (factory : RedisConnectionFactory ): RedisCacheManager {
88+ return RedisCacheManager .builder(factory).cacheDefaults(cacheManagerConfig.entryTtl(Duration .ofHours(1 ))).withInitialCacheConfigurations(cacheMap).build()
8889 }
8990}
0 commit comments