feat(cache): 自动装配 + spring.factories 注册
This commit is contained in:
45
src/main/java/com/njcn/middle/cache/autoconfig/RedisCacheAutoConfiguration.java
vendored
Normal file
45
src/main/java/com/njcn/middle/cache/autoconfig/RedisCacheAutoConfiguration.java
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
package com.njcn.middle.cache.autoconfig;
|
||||
|
||||
import com.njcn.middle.cache.support.CacheKeyBuilder;
|
||||
import com.njcn.middle.cache.support.CacheValueCodec;
|
||||
import com.njcn.middle.cache.template.RedisCacheEnhanceTemplate;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
|
||||
/**
|
||||
* Redis 缓存自动装配。装配在 {@link RedisAutoConfiguration} 之后,确保 {@link StringRedisTemplate} 就绪。
|
||||
* 与 stream 装配互不引用;纯模板、无后台线程。
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnClass(StringRedisTemplate.class)
|
||||
@AutoConfigureAfter(RedisAutoConfiguration.class)
|
||||
@EnableConfigurationProperties(RedisCacheProperties.class)
|
||||
public class RedisCacheAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public CacheKeyBuilder cacheKeyBuilder(RedisCacheProperties props) {
|
||||
return new CacheKeyBuilder(props.getKeyPrefix(), props.isEnvIsolation(), props.getEnv());
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public CacheValueCodec cacheValueCodec() {
|
||||
return new CacheValueCodec();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public RedisCacheEnhanceTemplate redisCacheEnhanceTemplate(StringRedisTemplate redis,
|
||||
CacheKeyBuilder cacheKeyBuilder,
|
||||
CacheValueCodec cacheValueCodec,
|
||||
RedisCacheProperties props) {
|
||||
return new RedisCacheEnhanceTemplate(redis, cacheKeyBuilder, cacheValueCodec, props);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user