我正在使用Spring Session和Redis,但是在进行测试时我想要禁用它。我的类被注释为:
@ActiveProfiles("integrationtests")
我的应用程序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服务器,测试可以正常工作,但是我当然不想一直保持这种状态 ; )
//更新
我一直在尝试使用
@SpringBootTest(classes = {Application.class})
@ActiveProfiles("integrationtests")
并且将Application.class与Redis排除在外:
@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自动配置调试显示我已经排除了这个类,但是没有效果:
Exclusions:
-----------
org.springframework.boot.autoconfigure.session.SessionAutoConfiguration
org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration
spring.session.store-type=hash_map
。 - imarchuang