测试时在弹簧启动时禁用Redis AutoConfig

时间:2017-08-30 22:34:28

标签: java spring spring-boot redis spring-data-redis

我正在尝试使用spring boot进行测试时禁用Redis。我已禁用配置,但自动配置创建了默认连接并失败,因为它无法连接到不存在的服务。为了测试,我满足于使用基本的内存缓存或无操作缓存。这也不起作用。这是我尝试过的:

per this issue我将配置添加到我的测试应用属性

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration

但是。这让我更进一步。但最终我得到了NoSuchBeanDefinitionException redisTemplate - 这是因为redisReferenceResolver正试图查看它。

现在看看我的调试器,它试图补充的bean是: 来自org.springframework.data.redis.core.convert.ReferenceResolverImpl的{​​{1}} spring-data-redis:1.8.0.RELEASE来自此依赖关系:compile('org.springframework.boot:spring-boot-starter-data-redis')。我承认,bean名称有点误导。它实际解析的类型不是

对redis的唯一其他引用是在我们的hibernate支持中。

有人可以解释如何关闭它进行测试吗?

3 个答案:

答案 0 :(得分:7)

  • 尝试在测试属性文件中排除这两个自动配置类:
    spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration

  • 排除 org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
    并设置:spring.data.redis.repositories.enabled=false

答案 1 :(得分:1)

如果您不想更改任何文件/代码,也可以使用环境变量执行此操作:

SPRING_AUTOCONFIGURE_EXCLUDE=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration

答案 2 :(得分:0)

使用YAML语法(和Spring Boot):

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