为什么 Spring 试图创建一个 `redisReferenceResolver` bean?

Why is Spring trying to create a `redisReferenceResolver` bean?

我的项目确实使用了 Redis,但我的单元测试模拟了它。但是它并没有嘲笑它 enough 因为我得到了这个堆栈跟踪片段:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisReferenceResolver': Cannot resolve reference to bean 'redisTemplate' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'redisTemplate' available
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:378)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110)

正确。我已经仔细确保没有可用的 redisTemplate bean,因为我不想在我的单元测试中使用 运行 redis。但我不知道它为什么要尝试创建 redisReferenceResolver bean。

我已经关闭了自动配置:

spring:
  profiles: RedisMock
  autoconfigure:
    exclude:
      - org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration

(我的测试在顶部有 @ActiveProfiles({"WebMvcTest","RedisMock"})) 我确实有一个 class 用 @RedisHash 注释,但我需要它来进行测试。 任何人都知道什么可能触发自动配置? 谢谢

redisReferenceResolver 由 Spring 数据对 Redis-based 存储库的支持定义。将 spring.data.redis.repositories.enabled 设置为 false 并确保您没有在应用中的任何地方使用 @EnableRedisRepositories 将禁用它。