微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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,然后测试它是否在事后工作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐