【发布时间】:2017-06-09 05:17:39
【问题描述】:
我正在使用带有 redis 的 spring session,但我想在进行测试时禁用它。我的班级被注释了:
@ActiveProfiles("integrationtests")
我的 application-integrationtests.tml 文件包含:
spring.autoconfigure.exclude: org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
但它仍然失败:
Caused by: org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
如果我打开 redis-server,测试会起作用,但我当然不想保持这种状态; )
//更新
我一直在尝试
@SpringBootTest(classes = {Application.class})
@ActiveProfiles("integrationtests")
和排除 Redis 的 Application.class:
@SpringBootApplication(exclude={SessionAutoConfiguration.class, RedisAutoConfiguration.class, RedisHttpSessionConfiguration.class})
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
但它失败了:
Error creating bean with name 'redisMessageListenerContainer' defined in class path resource [org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.class]
spring autoconfigure debug 看到我排除了这个类,但是没有效果:
Exclusions:
-----------
org.springframework.boot.autoconfigure.session.SessionAutoConfiguration
org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration
【问题讨论】:
-
ive 解决方法如下:stackoverflow.com/questions/33008798/…,但主要问题仍然存在 - 为什么排除 redis 类不排除它们? :)
-
知道在测试期间很难始终准备好一个 redis 实例,我建议您将这个属性
spring.session.store-type=hash_map用于您的测试用例
标签: java spring redis spring-session spring-data-redis