Disable Redis AutoConfig in spring boot when testing

Christian Bongiorno picture Christian Bongiorno · Aug 31, 2017 · Viewed 7.9k times · Source

I am trying to disable Redis when I am testing with spring boot. I have disabled my configuration but the auto config created a default connection and fails because it can't connect to a non-existent service. For testing I am content to just use a basic in-memory cache or a no-op cache. That doesn't work either. Here is what I have tried:

per this issue I added said configuration to my test app properties

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

But. That gets me a bit further. But ultimately I get a NoSuchBeanDefinitionException redisTemplate - this is because redisReferenceResolver is trying to look that up.

Looking at my debugger right now, the bean it's trying to hydrate is: org.springframework.data.redis.core.convert.ReferenceResolverImpl which is coming from spring-data-redis:1.8.0.RELEASE which is coming from this dependency: compile('org.springframework.boot:spring-boot-starter-data-redis') . I admit, the bean name is a bit misleading. The type it actually resolves to is not

The only other reference to redis is in our hibernate support.

Can someone explain how to turn this off for testing?

Answer

ootero picture ootero · Oct 6, 2017
  • Try excluding this two auto-configuration classes in your test properties file:
    spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration

or

  • exclude org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
    and set: spring.data.redis.repositories.enabled=false