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:
Vedran Pavic
2017-11-16 21:33:59 +01:00
committed by Greg Turnquist
parent 7b47d32bc1
commit e8d12b50b5
3 changed files with 7 additions and 4 deletions

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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());
}