Only auto-configure WebSessionIdResolver in reactive web app
Closes gh-29669
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
* Copyright 2012-2022 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.
|
||||
@@ -20,6 +20,8 @@ import reactor.core.publisher.Mono;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.PropertyMapper;
|
||||
@@ -42,6 +44,7 @@ import org.springframework.web.server.session.WebSessionManager;
|
||||
* @since 2.6.0
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnWebApplication(type = Type.REACTIVE)
|
||||
@ConditionalOnClass({ WebSessionManager.class, Mono.class })
|
||||
@EnableConfigurationProperties({ WebFluxProperties.class, ServerProperties.class })
|
||||
public class WebSessionIdResolverAutoConfiguration {
|
||||
|
||||
@@ -35,12 +35,16 @@ import javax.validation.ValidatorFactory;
|
||||
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.validation.ValidatorAdapter;
|
||||
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
||||
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration.WebFluxConfig;
|
||||
import org.springframework.boot.context.properties.source.MutuallyExclusiveConfigurationPropertiesException;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.boot.test.context.runner.ContextConsumer;
|
||||
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
||||
import org.springframework.boot.web.codec.CodecCustomizer;
|
||||
@@ -615,6 +619,15 @@ class WebFluxAutoConfigurationTests {
|
||||
}));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@ValueSource(classes = { ServerProperties.class, WebFluxProperties.class })
|
||||
void propertiesAreNotEnabledInNonWebApplication(Class<?> propertiesClass) {
|
||||
new ApplicationContextRunner()
|
||||
.withConfiguration(AutoConfigurations.of(WebFluxAutoConfiguration.class,
|
||||
WebSessionIdResolverAutoConfiguration.class))
|
||||
.run((context) -> assertThat(context).doesNotHaveBean(propertiesClass));
|
||||
}
|
||||
|
||||
private ContextConsumer<ReactiveWebApplicationContext> assertExchangeWithSession(
|
||||
Consumer<MockServerWebExchange> exchange) {
|
||||
return (context) -> {
|
||||
|
||||
Reference in New Issue
Block a user