diff --git a/src/main/java/com/njcn/middle/cache/autoconfig/RedisCacheAutoConfiguration.java b/src/main/java/com/njcn/middle/cache/autoconfig/RedisCacheAutoConfiguration.java index e456ecb..58a957f 100644 --- a/src/main/java/com/njcn/middle/cache/autoconfig/RedisCacheAutoConfiguration.java +++ b/src/main/java/com/njcn/middle/cache/autoconfig/RedisCacheAutoConfiguration.java @@ -4,6 +4,7 @@ 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.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; @@ -18,6 +19,7 @@ import org.springframework.data.redis.core.StringRedisTemplate; */ @Configuration @ConditionalOnClass(StringRedisTemplate.class) +@ConditionalOnBean(StringRedisTemplate.class) @AutoConfigureAfter(RedisAutoConfiguration.class) @EnableConfigurationProperties(RedisCacheProperties.class) public class RedisCacheAutoConfiguration { diff --git a/src/test/java/com/njcn/middle/cache/autoconfig/RedisCacheAutoConfigurationTest.java b/src/test/java/com/njcn/middle/cache/autoconfig/RedisCacheAutoConfigurationTest.java index 275d03d..57fe23d 100644 --- a/src/test/java/com/njcn/middle/cache/autoconfig/RedisCacheAutoConfigurationTest.java +++ b/src/test/java/com/njcn/middle/cache/autoconfig/RedisCacheAutoConfigurationTest.java @@ -40,6 +40,17 @@ class RedisCacheAutoConfigurationTest { }); } + @Test + void backsOffWhenNoStringRedisTemplateBean() { + // 不装配 RedisAutoConfiguration,上下文内无 StringRedisTemplate Bean: + // 应整类 back off 优雅退场,而非因缺依赖启动失败。 + new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(RedisCacheAutoConfiguration.class)) + .run(ctx -> assertThat(ctx) + .hasNotFailed() + .doesNotHaveBean(RedisCacheEnhanceTemplate.class)); + } + @Configuration static class CustomConfig { @Bean