【问题标题】:Spring Auto Configuration prioritization between Lettuce or Jedis生菜或绝地之间的 Spring Auto Configuration 优先级
【发布时间】:2019-10-16 15:18:33
【问题描述】:

我想使用 Lettuce 作为 Redis 客户端,这是 spring-boot-starter-data-redis-reactive 的默认依赖项。但是,我将 Jedis 作为依赖项从另一个编写为纯 Java 代码(没有 Spring)的组件继承。由于 JedisConnectionFactory 的存在,这会导致在初始化 LettuceConnectionFactory 时发生冲突。

如何在确保为我自己的代码初始化 LettuceConnectionFactory 的同时让 Jedis 依赖于其他组件的使用?使用 LetticeConnectionFactory 的主要原因是我的服务中的反应式编程。 两个连接工厂都配置为通过 RedisAutoConfiguration 进行初始化,没有优先级选项。

https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration.java

【问题讨论】:

    标签: spring spring-boot redis jedis lettuce


    【解决方案1】:

    您可以通过创建自己的 @Configuration 类并在其中添加新的 @Bean 来覆盖 RedisConnectionFactory。

    例如:

    @Bean
    RedisConnectionFactory myLettuceConnectionFactory() {
      // your setup....
      new LettuceConnectionFactory();
    }
    

    然后使用myLettuceConnectionFactory bean 设置RedisTemplate @Bean

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
      final RedisTemplate<String, Object> template = new RedisTemplate<>();
      template.setConnectionFactory(myLettuceConnectionFactory());
      // other settings...
      return template;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多