我用其他方法下面的Cache Repo,
@Component
@CacheConfig(cacheNames = "enroll",cacheManager = "springtoolCM")
public class EnrollCasheRepository {
/** The string redis template. */
@Autowired
private StringRedisTemplate stringRedisTemplate;
}
我在pom中使用spring-boot-starter-redis.
我在@Autowired的过滤器中使用EnrollCasheRepository.
即使我在application.properties中注释掉redis属性,而且我的redis服务器也关闭了,但我仍然得到一个EnrollCasheRepository对象.什么是更好的方法来检查redis是否安装在我的机器上并继续使用EnrollCasheRepository(如果是这样).
如果没有安装redis并继续,我正在寻找一个更好的方法除了处理异常抛出?
最佳答案
Spring引导redis配置由
此类创建连接工厂并初始化StringRedisTemplate bean.
RedisAutoConfiguration
提供此类创建连接工厂并初始化StringRedisTemplate bean.
配置取决于在类路径上使用Jedis.
似乎没有测试来检查连接细节是否有效.
如果您希望创建的EnrollCasheRepository bean依赖于jedis的配置,那么实现它的最简单方法可能是使用@ConditionalOnProperty
对其进行注释并创建一个功能标志配置值.
@Component
@ConditionalOnProperty("redis.enabled")
@CacheConfig(cacheNames = "enroll",cacheManager = "springtoolCM")
public class EnrollCasheRepository {
将标志添加到application.properties(或等效的)
redis.enabled=true
如果您想要更加智能化,比如在创建bean之前检测配置的redis服务器是否可用,那么这将更复杂.
您可以使用自己的Condition
实现@Conditional
,但这可能比它的价值更麻烦.
你可能最好创建bean,然后测试它是否在事后工作.