我正在尝试使用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支持中。
有人可以解释如何关闭它进行测试吗?
答案 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