java – 使用spring boot处理redis缓存可用性

前端之家收集整理的这篇文章主要介绍了java – 使用spring boot处理redis缓存可用性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我用其他方法下面的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配置由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,然后测试它是否在事后工作.

猜你在找的Spring相关文章