From 094ffe8a609eccfe71f188d8a2653469de79c85b Mon Sep 17 00:00:00 2001 From: Vedran Pavic Date: Fri, 29 Mar 2019 18:14:59 +0100 Subject: [PATCH] Avoid conflicts with user provided RedisMessageListenerContainer Resolves: #1252 --- .../http/RedisHttpSessionConfiguration.java | 2 +- .../RedisHttpSessionConfigurationTests.java | 26 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java index ecbd96e7..b15d87f2 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java @@ -125,7 +125,7 @@ public class RedisHttpSessionConfiguration extends SpringHttpSessionConfiguratio } @Bean - public RedisMessageListenerContainer redisMessageListenerContainer( + public RedisMessageListenerContainer springSessionRedisMessageListenerContainer( RedisOperationsSessionRepository sessionRepository) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(this.redisConnectionFactory); diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationTests.java index abee9f74..54d16e26 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2018 the original author or authors. + * Copyright 2014-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package org.springframework.session.data.redis.config.annotation.web.http; +import java.util.Map; import java.util.Properties; import org.junit.After; @@ -31,6 +32,7 @@ import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisOperations; +import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.mock.env.MockEnvironment; import org.springframework.session.data.redis.RedisOperationsSessionRepository; import org.springframework.session.data.redis.config.annotation.SpringSessionRedisConnectionFactory; @@ -190,6 +192,17 @@ public class RedisHttpSessionConfigurationTests { .withMessageContaining("expected single matching bean but found 2"); } + @Test // gh-1252 + public void customRedisMessageListenerContainerConfig() { + registerAndRefresh(RedisConfig.class, + CustomRedisMessageListenerContainerConfig.class); + Map beans = this.context + .getBeansOfType(RedisMessageListenerContainer.class); + assertThat(beans).hasSize(2); + assertThat(beans).containsKeys("springSessionRedisMessageListenerContainer", + "redisMessageListenerContainer"); + } + private void registerAndRefresh(Class... annotatedClasses) { this.context.register(annotatedClasses); this.context.refresh(); @@ -314,4 +327,15 @@ public class RedisHttpSessionConfigurationTests { } + @Configuration + @EnableRedisHttpSession + static class CustomRedisMessageListenerContainerConfig { + + @Bean + public RedisMessageListenerContainer redisMessageListenerContainer() { + return new RedisMessageListenerContainer(); + } + + } + }