当前位置:   article > 正文

spring-boot-starter-data-redis 引发的一系列惨案_redisrepositoryfactory

redisrepositoryfactory
  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-redis</artifactId>
  4. </dependency>

pom 引入jar包 ,如果redis配置文件使用 lettuce ,还需要引入 commons-pool2 ,否则会报错

  1. <dependency>
  2. <groupId>org.apache.commons</groupId>
  3. <artifactId>commons-pool2</artifactId>
  4. </dependency>

还用到了redis分布式锁,引入

  1. <dependency>
  2. <!-- spring integration -->
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-integration</artifactId>
  5. <version>2.5.0</version>
  6. </dependency>
  7. <dependency>
  8. <!-- spring integration与redis结合,实现redis分布式锁 -->
  9. <groupId>org.springframework.integration</groupId>
  10. <artifactId>spring-integration-redis</artifactId>
  11. </dependency>

启动项目时,启动失败

有一条info信息

Multiple Spring Data modules found, entering strict repository configuration mode!

但是具体的错误信息是,有个 对象依赖关系无法解析的错误

开始怀疑是info信息里面的报错影响的

加了配置

  1. spring:
  2. data:
  3. redis:
  4. repositories:
  5. enabled: false

没用,再springboot启动类上加入

@SpringBootApplication(exclude = {RedisRepositoriesAutoConfiguration.class})

还是报一样的错误

搜索 RepositoryFactorySupport,的实现 

JpaRepositoryFactory,R2dbcRepositoryFactory,ReactiveRepositoryFactorySupport

是项目原有的,引入redis后出现 KeyValueRepositoryFactory,RedisRepositoryFactory

发现没法排除KeyValueRepositoryFactory ,暂时放弃这个info信息

解决对象依赖关系无法解析

No qualifying bean of type xxx available

核对了类的注解配置都没有问题

  1. public interface xxxxx extends ReactiveSortingRepository<xxxx,String> {
  2. ....
  3. }

怀疑应该是r2dbc 和 redis 之间存在冲突 ,ReactiveCrudRepository 是一个通用接口,可以分配给 Redis 和 R2DBC

最后将继承的repository类换成 R2dbcRepository

  1. public interface xxxxx extends R2dbcRepository<xxxx,String> {
  2. ....
  3. }

项目启动正常,后来校验了一下,原来的是这个对象里面使用的表已经不存在了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/745042
推荐阅读
相关标签
  

闽ICP备14008679号