From b6d9ae7efa8d7450593b7900001fc01b15d081c6 Mon Sep 17 00:00:00 2001 From: Vedran Pavic Date: Mon, 20 Nov 2017 09:20:35 +0100 Subject: [PATCH 1/2] Align Session auto-config with Redis namespace config support See gh-11084 --- .../autoconfigure/session/RedisSessionProperties.java | 2 +- .../ReactiveSessionAutoConfigurationRedisTests.java | 11 +++++++---- .../session/SessionAutoConfigurationRedisTests.java | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisSessionProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisSessionProperties.java index 8aede5002ef..33484e16a69 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisSessionProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisSessionProperties.java @@ -33,7 +33,7 @@ public class RedisSessionProperties { /** * Namespace for keys used to store sessions. */ - private String namespace = ""; + private String namespace = "spring:session"; /** * Sessions flush mode. diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationRedisTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationRedisTests.java index 865ad42db07..f6281feb393 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationRedisTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationRedisTests.java @@ -41,6 +41,7 @@ import static org.assertj.core.api.Assertions.assertThat; * * @author Stephane Nicoll * @author Andy Wilkinson + * @author Vedran Pavic */ public class ReactiveSessionAutoConfigurationRedisTests extends AbstractSessionAutoConfigurationTests { @@ -56,7 +57,7 @@ public class ReactiveSessionAutoConfigurationRedisTests this.contextRunner.withPropertyValues("spring.session.store-type=redis") .withConfiguration(AutoConfigurations.of(RedisAutoConfiguration.class, RedisReactiveAutoConfiguration.class)) - .run(validateSpringSessionUsesRedis(RedisFlushMode.ON_SAVE)); + .run(validateSpringSessionUsesRedis("spring:session:", RedisFlushMode.ON_SAVE)); } @Test @@ -66,7 +67,7 @@ public class ReactiveSessionAutoConfigurationRedisTests ReactiveMongoOperationsSessionRepository.class)) .withConfiguration(AutoConfigurations.of(RedisAutoConfiguration.class, RedisReactiveAutoConfiguration.class)) - .run(validateSpringSessionUsesRedis(RedisFlushMode.ON_SAVE)); + .run(validateSpringSessionUsesRedis("spring:session:", RedisFlushMode.ON_SAVE)); } @Test @@ -77,16 +78,18 @@ public class ReactiveSessionAutoConfigurationRedisTests .withPropertyValues("spring.session.store-type=redis", "spring.session.redis.namespace=foo", "spring.session.redis.flush-mode=immediate") - .run(validateSpringSessionUsesRedis(RedisFlushMode.IMMEDIATE)); + .run(validateSpringSessionUsesRedis("foo:", RedisFlushMode.IMMEDIATE)); } private ContextConsumer validateSpringSessionUsesRedis( - RedisFlushMode flushMode) { + String namespace, RedisFlushMode flushMode) { return (context) -> { System.out.println(new ConditionEvaluationReportMessage( context.getBean(ConditionEvaluationReport.class))); ReactiveRedisOperationsSessionRepository repository = validateSessionRepository( context, ReactiveRedisOperationsSessionRepository.class); + assertThat(new DirectFieldAccessor(repository).getPropertyValue("namespace")) + .isEqualTo(namespace); assertThat(new DirectFieldAccessor(repository) .getPropertyValue("redisFlushMode")).isEqualTo(flushMode); }; diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationRedisTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationRedisTests.java index 0694a52b04e..88ce73a1b6f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationRedisTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationRedisTests.java @@ -78,7 +78,7 @@ public class SessionAutoConfigurationRedisTests "spring.session.redis.namespace=foo", "spring.session.redis.flush-mode=immediate", "spring.session.redis.cleanup-cron=0 0 12 * * *") - .run(validateSpringSessionUsesRedis("spring:session:foo:event:created:", + .run(validateSpringSessionUsesRedis("foo:event:created:", RedisFlushMode.IMMEDIATE, "0 0 12 * * *")); } From 75079b3bb88e12e9850f521d8afce576e2bffb38 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 20 Nov 2017 11:29:27 +0100 Subject: [PATCH 2/2] Polish "Align Session auto-config with Redis namespace config support" Closes gh-11084 --- .../src/main/asciidoc/appendix-application-properties.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index ec26c90fdeb..c196d8024cc 100644 --- a/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -431,7 +431,7 @@ content into your application; rather pick only the properties that you need. # SPRING SESSION REDIS ({sc-spring-boot-autoconfigure}/session/RedisSessionProperties.{sc-ext}[RedisSessionProperties]) spring.session.redis.cleanup-cron=0 * * * * * # Cron expression for expired session cleanup job. spring.session.redis.flush-mode=on-save # Sessions flush mode. - spring.session.redis.namespace= # Namespace for keys used to store sessions. + spring.session.redis.namespace=spring:session # Namespace for keys used to store sessions. # SPRING SOCIAL ({sc-spring-boot-autoconfigure}/social/SocialWebAutoConfiguration.{sc-ext}[SocialWebAutoConfiguration]) spring.social.auto-connection-views=false # Enable the connection status view for supported providers.