<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
pom 引入jar包 ,如果redis配置文件使用 lettuce ,还需要引入 commons-pool2 ,否则会报错
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
还用到了redis分布式锁,引入
<dependency>
<!-- spring integration -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-integration</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<!-- spring integration与redis结合,实现redis分布式锁 -->
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-redis</artifactId>
</dependency>
启动项目时,启动失败
有一条info信息
Multiple Spring Data modules found, entering strict repository configuration mode!
但是具体的错误信息是,有个 对象依赖关系无法解析的错误
开始怀疑是info信息里面的报错影响的
加了配置
spring:
data:
redis:
repositories:
enabled: false
没用,再springboot启动类上加入
@SpringBootApplication(exclude = {RedisRepositoriesAutoConfiguration.class})
还是报一样的错误
搜索 RepositoryFactorySupport,的实现
JpaRepositoryFactory,R2dbcRepositoryFactory,ReactiveRepositoryFactorySupport
是项目原有的,引入redis后出现 KeyValueRepositoryFactory,RedisRepositoryFactory
发现没法排除KeyValueRepositoryFactory ,暂时放弃这个info信息
解决对象依赖关系无法解析
No qualifying bean of type xxx available
核对了类的注解配置都没有问题
public interface xxxxx extends ReactiveSortingRepository<xxxx,String> {
....
}
怀疑应该是r2dbc 和 redis 之间存在冲突 ,ReactiveCrudRepository 是一个通用接口,可以分配给 Redis 和 R2DBC
最后将继承的repository类换成 R2dbcRepository
public interface xxxxx extends R2dbcRepository<xxxx,String> {
....
}
项目启动正常,后来校验了一下,原来的是这个对象里面使用的表已经不存在了。