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 f1c9fb32fc2..96711203aa1 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 @@ -29,7 +29,7 @@ import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration; -import org.springframework.boot.autoconfigure.session.SessionAutoConfiguration.SessionConfigurationImportSelector; +import org.springframework.boot.autoconfigure.session.SessionAutoConfiguration.SessionRepositoryConfiguration; import org.springframework.boot.autoconfigure.session.SessionAutoConfiguration.SessionRepositoryValidator; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Configuration; @@ -50,16 +50,22 @@ import org.springframework.session.SessionRepository; * @since 1.4.0 */ @Configuration -@ConditionalOnMissingBean(SessionRepository.class) @ConditionalOnClass(Session.class) @ConditionalOnWebApplication(type = Type.SERVLET) @EnableConfigurationProperties(SessionProperties.class) @AutoConfigureAfter({ DataSourceAutoConfiguration.class, HazelcastAutoConfiguration.class, JdbcTemplateAutoConfiguration.class, RedisAutoConfiguration.class }) -@Import({ SessionConfigurationImportSelector.class, SessionRepositoryValidator.class, +@Import({ SessionRepositoryConfiguration.class, SessionRepositoryValidator.class, SessionRepositoryFilterConfiguration.class }) public class SessionAutoConfiguration { + @Configuration + @ConditionalOnMissingBean(SessionRepository.class) + @Import(SessionConfigurationImportSelector.class) + static class SessionRepositoryConfiguration { + + } + /** * {@link ImportSelector} to add {@link StoreType} configuration classes. */ 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 5ae293acbf8..9cea6c8eb9d 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 @@ -32,6 +32,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.session.MapSessionRepository; import org.springframework.session.SessionRepository; +import org.springframework.session.config.annotation.web.http.EnableSpringHttpSession; import org.springframework.session.web.http.SessionRepositoryFilter; import org.springframework.test.util.ReflectionTestUtils; @@ -148,6 +149,17 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat }); } + @Test + public void filterOrderCanBeCustomizedWithCustomStore() { + this.contextRunner.withUserConfiguration(SessionRepositoryConfiguration.class) + .withPropertyValues("spring.session.servlet.filter-order=123") + .run((context) -> { + FilterRegistrationBean registration = context + .getBean(FilterRegistrationBean.class); + assertThat(registration.getOrder()).isEqualTo(123); + }); + } + @SuppressWarnings("unchecked") @Test public void filterDispatcherTypesCanBeCustomized() { @@ -163,6 +175,7 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat } @Configuration + @EnableSpringHttpSession static class SessionRepositoryConfiguration { @Bean