加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 01:43:29 所属栏目:大数据 来源:网络整理
导读:我用其他方法下面的Cache Repo, @Component@CacheConfig(cacheNames = "enroll",cacheManager = "springtoolCM")public class EnrollCasheRepository { /** The string redis template. */ @Autowired private StringRedisTemplate stringRedisTemplate;} 我

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读