diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionAutoConfiguration.java index 4f6b44fac2..5ffcc5ffbf 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionAutoConfiguration.java @@ -38,7 +38,6 @@ import org.springframework.context.annotation.ImportSelector; import org.springframework.core.type.AnnotationMetadata; import org.springframework.session.Session; import org.springframework.session.SessionRepository; -import org.springframework.util.Assert; /** * {@link EnableAutoConfiguration Auto-configuration} for Spring Session. @@ -97,11 +96,17 @@ public class SessionAutoConfiguration { @PostConstruct public void checkSessionRepository() { StoreType storeType = this.sessionProperties.getStoreType(); - if (storeType != StoreType.NONE) { - Assert.notNull(this.sessionRepositoryProvider.getIfAvailable(), - "No session repository could be auto-configured, check your " - + "configuration (session store type is '" + storeType - + "')"); + if (storeType != StoreType.NONE + && this.sessionRepositoryProvider.getIfAvailable() == null) { + if (storeType != null) { + throw new IllegalArgumentException("No session repository could be " + + "auto-configured, check your configuration (session store " + + "type is '" + storeType.name().toLowerCase() + "')"); + } + else { + throw new IllegalArgumentException("No Spring Session store is " + + "configured: set the 'spring.session.store-type' property"); + } } } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationTests.java index a583a62de1..775cdb7a7e 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationTests.java @@ -52,11 +52,19 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat @Test public void contextFailsIfStoreTypeNotSet() { this.thrown.expect(BeanCreationException.class); - this.thrown.expectMessage("No session repository could be auto-configured"); - this.thrown.expectMessage("session store type is 'null'"); + this.thrown.expectMessage("No Spring Session store is configured"); + this.thrown.expectMessage("set the 'spring.session.store-type' property"); load(); } + @Test + public void contextFailsIfStoreTypeNotAvailable() { + this.thrown.expect(BeanCreationException.class); + this.thrown.expectMessage("No session repository could be auto-configured"); + this.thrown.expectMessage("session store type is 'mongo'"); + load("spring.session.store-type=mongo"); + } + @Test public void autoConfigurationDisabledIfStoreTypeSetToNone() { load("spring.session.store-type=none"); @@ -95,14 +103,6 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat load("spring.session.store-type=hash-map", "spring.session.timeout=3000"); } - @Test - public void validationFailsIfSessionRepositoryIsNotConfigured() { - this.thrown.expect(BeanCreationException.class); - this.thrown.expectMessage("No session repository could be auto-configured"); - this.thrown.expectMessage("session store type is 'JDBC'"); - load("spring.session.store-type=jdbc"); - } - @SuppressWarnings("unchecked") @Test public void filterIsRegisteredWithAsyncErrorAndRequestDispatcherTypes() {