Refactor ReactiveMongoWebSessionConfiguration to support Spring Boot
This commit updates `ReactiveMongoWebSessionConfiguration` to extend `SpringWebSessionConfiguration` rather than having it imported via `@EnableMongoWebSession`. This is required in order for Spring Boot auto-configuration to work properly.
This commit is contained in:
committed by
Greg Turnquist
parent
7b47d32bc1
commit
e8d12b50b5
@@ -21,7 +21,6 @@ import java.lang.annotation.Target;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.session.config.annotation.web.server.EnableSpringWebSession;
|
||||
import org.springframework.session.data.mongo.ReactiveMongoOperationsSessionRepository;
|
||||
|
||||
/**
|
||||
@@ -45,12 +44,12 @@ import org.springframework.session.data.mongo.ReactiveMongoOperationsSessionRepo
|
||||
* </pre>
|
||||
*
|
||||
* @author Greg Turnquist
|
||||
* @author Vedran Pavić
|
||||
* @since 2.0
|
||||
*/
|
||||
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
|
||||
@Target({ java.lang.annotation.ElementType.TYPE })
|
||||
@Documented
|
||||
@EnableSpringWebSession
|
||||
@Import(ReactiveMongoWebSessionConfiguration.class)
|
||||
@Configuration
|
||||
public @interface EnableMongoWebSession {
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.springframework.core.annotation.AnnotationAttributes;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
import org.springframework.data.mongodb.core.MongoOperations;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
|
||||
import org.springframework.session.config.annotation.web.server.SpringWebSessionConfiguration;
|
||||
import org.springframework.session.data.mongo.AbstractMongoSessionConverter;
|
||||
import org.springframework.session.data.mongo.ReactiveMongoOperationsSessionRepository;
|
||||
import org.springframework.util.StringUtils;
|
||||
@@ -33,9 +34,11 @@ import org.springframework.util.StringValueResolver;
|
||||
* Configure a {@link ReactiveMongoOperationsSessionRepository} using a provided {@link ReactiveMongoOperations}.
|
||||
*
|
||||
* @author Greg Turnquist
|
||||
* @author Vedran Pavić
|
||||
*/
|
||||
@Configuration
|
||||
public class ReactiveMongoWebSessionConfiguration implements EmbeddedValueResolverAware, ImportAware {
|
||||
public class ReactiveMongoWebSessionConfiguration extends SpringWebSessionConfiguration
|
||||
implements EmbeddedValueResolverAware, ImportAware {
|
||||
|
||||
private AbstractMongoSessionConverter mongoSessionConverter;
|
||||
private Integer maxInactiveIntervalInSeconds;
|
||||
|
||||
@@ -47,6 +47,7 @@ import org.springframework.web.server.session.WebSessionManager;
|
||||
* Verify various configurations through {@link EnableSpringWebSession}.
|
||||
*
|
||||
* @author Greg Turnquist
|
||||
* @author Vedran Pavić
|
||||
*/
|
||||
public class ReactiveMongoWebSessionConfigurationTest {
|
||||
|
||||
@@ -85,7 +86,7 @@ public class ReactiveMongoWebSessionConfigurationTest {
|
||||
|
||||
assertThatExceptionOfType(UnsatisfiedDependencyException.class)
|
||||
.isThrownBy(this.context::refresh)
|
||||
.withMessageContaining("Error creating bean with name 'webSessionManager'")
|
||||
.withMessageContaining("Error creating bean with name 'reactiveMongoOperationsSessionRepository'")
|
||||
.withMessageContaining("No qualifying bean of type '" + ReactiveMongoOperations.class.getCanonicalName());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user