diff --git a/spring-session-samples/spring-session-sample-boot-mongodb-reactive/spring-session-sample-boot-mongodb-reactive.gradle b/spring-session-samples/spring-session-sample-boot-mongodb-reactive/spring-session-sample-boot-mongodb-reactive.gradle
index cfca69a5..7cf2b428 100644
--- a/spring-session-samples/spring-session-sample-boot-mongodb-reactive/spring-session-sample-boot-mongodb-reactive.gradle
+++ b/spring-session-samples/spring-session-sample-boot-mongodb-reactive/spring-session-sample-boot-mongodb-reactive.gradle
@@ -1,11 +1,12 @@
apply plugin: 'io.spring.convention.spring-sample-boot'
dependencies {
- implementation project(':spring-session-data-mongodb')
- implementation "org.springframework.boot:spring-boot-starter-webflux"
- implementation "org.springframework.boot:spring-boot-starter-thymeleaf"
- implementation "org.springframework.boot:spring-boot-starter-data-mongodb-reactive"
- implementation "org.testcontainers:mongodb"
+ implementation project(':spring-session-data-mongodb')
+ implementation "org.springframework.boot:spring-boot-starter-webflux"
+ implementation "org.springframework.boot:spring-boot-starter-thymeleaf"
+ implementation "org.springframework.boot:spring-boot-starter-data-mongodb-reactive"
+ implementation "org.springframework.boot:spring-boot-testcontainers"
+ implementation "org.testcontainers:mongodb"
testImplementation "org.springframework.boot:spring-boot-starter-test"
testImplementation "org.seleniumhq.selenium:htmlunit-driver"
diff --git a/spring-session-samples/spring-session-sample-boot-mongodb-reactive/src/main/java/org/springframework/session/mongodb/examples/MongoDbConfig.java b/spring-session-samples/spring-session-sample-boot-mongodb-reactive/src/main/java/org/springframework/session/mongodb/examples/MongoDbConfig.java
new file mode 100644
index 00000000..14bab6d1
--- /dev/null
+++ b/spring-session-samples/spring-session-sample-boot-mongodb-reactive/src/main/java/org/springframework/session/mongodb/examples/MongoDbConfig.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.session.mongodb.examples;
+
+import org.testcontainers.containers.MongoDBContainer;
+
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author Yanming Zhou
+ */
+@Configuration(proxyBeanMethods = false)
+public class MongoDbConfig {
+
+ @Bean
+ @ServiceConnection
+ MongoDBContainer mongoDbContainer() {
+ return new MongoDBContainer("mongo:5.0.11");
+ }
+
+}
diff --git a/spring-session-samples/spring-session-sample-boot-mongodb-reactive/src/main/java/org/springframework/session/mongodb/examples/SpringSessionMongoReactiveApplication.java b/spring-session-samples/spring-session-sample-boot-mongodb-reactive/src/main/java/org/springframework/session/mongodb/examples/SpringSessionMongoReactiveApplication.java
index f1c55a26..fb8fca91 100644
--- a/spring-session-samples/spring-session-sample-boot-mongodb-reactive/src/main/java/org/springframework/session/mongodb/examples/SpringSessionMongoReactiveApplication.java
+++ b/spring-session-samples/spring-session-sample-boot-mongodb-reactive/src/main/java/org/springframework/session/mongodb/examples/SpringSessionMongoReactiveApplication.java
@@ -16,17 +16,8 @@
package org.springframework.session.mongodb.examples;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.testcontainers.containers.MongoDBContainer;
-
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.ApplicationContextInitializer;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.core.env.ConfigurableEnvironment;
-import org.springframework.core.env.MapPropertySource;
import org.springframework.session.data.mongo.config.annotation.web.reactive.EnableMongoWebSession;
/**
@@ -35,44 +26,14 @@ import org.springframework.session.data.mongo.config.annotation.web.reactive.Ena
*
* @author Rob Winch
* @author Greg Turnquist
+ * @author Yanming Zhou
*/
@SpringBootApplication
@EnableMongoWebSession
public class SpringSessionMongoReactiveApplication {
public static void main(String[] args) {
- SpringApplication application = new SpringApplication(SpringSessionMongoReactiveApplication.class);
- application.addInitializers(new Initializer());
- application.run(args);
- }
-
- /**
- * Use Testcontainers to managed MongoDB through Docker.
- *
- *
- * @see Local
- * Development with Testcontainers
- */
- static class Initializer implements ApplicationContextInitializer {
-
- static MongoDBContainer mongo = new MongoDBContainer("mongo:5.0.11");
-
- private static Map getProperties() {
- mongo.start();
-
- HashMap properties = new HashMap<>();
- properties.put("spring.data.mongodb.host", mongo.getHost());
- properties.put("spring.data.mongodb.port", mongo.getFirstMappedPort() + "");
- return properties;
- }
-
- @Override
- public void initialize(ConfigurableApplicationContext context) {
- ConfigurableEnvironment env = context.getEnvironment();
- env.getPropertySources().addFirst(new MapPropertySource("testcontainers", (Map) getProperties()));
- }
-
+ SpringApplication.run(SpringSessionMongoReactiveApplication.class, args);
}
}
diff --git a/spring-session-samples/spring-session-sample-boot-mongodb-reactive/src/test/java/org/springframework/session/mongodb/examples/AttributeTests.java b/spring-session-samples/spring-session-sample-boot-mongodb-reactive/src/test/java/org/springframework/session/mongodb/examples/AttributeTests.java
index 00468e15..b5aed7dc 100644
--- a/spring-session-samples/spring-session-sample-boot-mongodb-reactive/src/test/java/org/springframework/session/mongodb/examples/AttributeTests.java
+++ b/spring-session-samples/spring-session-sample-boot-mongodb-reactive/src/test/java/org/springframework/session/mongodb/examples/AttributeTests.java
@@ -21,7 +21,6 @@ import java.util.List;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
@@ -29,18 +28,15 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.session.mongodb.examples.pages.HomePage;
import org.springframework.session.mongodb.examples.pages.HomePage.Attribute;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author EddĂș MelĂ©ndez
* @author Rob Winch
+ * @author Yanming Zhou
*/
-@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ContextConfiguration(initializers = SpringSessionMongoReactiveApplication.Initializer.class)
public class AttributeTests {
@LocalServerPort
diff --git a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/spring-session-sample-boot-mongodb-traditional.gradle b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/spring-session-sample-boot-mongodb-traditional.gradle
index d9ea2e90..5e91bbcd 100644
--- a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/spring-session-sample-boot-mongodb-traditional.gradle
+++ b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/spring-session-sample-boot-mongodb-traditional.gradle
@@ -1,13 +1,14 @@
apply plugin: 'io.spring.convention.spring-sample-boot'
dependencies {
- implementation project(':spring-session-data-mongodb')
- implementation "org.springframework.boot:spring-boot-starter-web"
- implementation "org.springframework.boot:spring-boot-starter-thymeleaf"
- implementation "nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect"
- implementation "org.thymeleaf.extras:thymeleaf-extras-springsecurity6"
+ implementation project(':spring-session-data-mongodb')
+ implementation "org.springframework.boot:spring-boot-starter-web"
+ implementation "org.springframework.boot:spring-boot-starter-thymeleaf"
+ implementation "nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect"
+ implementation "org.thymeleaf.extras:thymeleaf-extras-springsecurity6"
implementation "org.springframework.boot:spring-boot-starter-data-mongodb"
implementation "org.springframework.boot:spring-boot-starter-security"
+ implementation "org.springframework.boot:spring-boot-testcontainers"
implementation "org.testcontainers:mongodb"
diff --git a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/SpringSessionMongoTraditionalBoot.java b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/SpringSessionMongoTraditionalBoot.java
index a63334dd..686c9746 100644
--- a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/SpringSessionMongoTraditionalBoot.java
+++ b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/SpringSessionMongoTraditionalBoot.java
@@ -16,57 +16,18 @@
package org.springframework.session.mongodb.examples;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.testcontainers.containers.MongoDBContainer;
-
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.ApplicationContextInitializer;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.core.env.ConfigurableEnvironment;
-import org.springframework.core.env.MapPropertySource;
/**
* @author Rob Winch
+ * @author Yanming Zhou
*/
@SpringBootApplication
public class SpringSessionMongoTraditionalBoot {
public static void main(String[] args) {
- SpringApplication application = new SpringApplication(SpringSessionMongoTraditionalBoot.class);
- application.addInitializers(new Initializer());
- application.run(args);
- }
-
- /**
- * Use Testcontainers to managed MongoDB through Docker.
- *
- *
- * @see Local
- * Developmenet with Testcontainers
- */
- static class Initializer implements ApplicationContextInitializer {
-
- static MongoDBContainer mongo = new MongoDBContainer("mongo:5.0.11");
-
- private static Map getProperties() {
- mongo.start();
-
- HashMap properties = new HashMap<>();
- properties.put("spring.data.mongodb.host", mongo.getHost());
- properties.put("spring.data.mongodb.port", mongo.getFirstMappedPort() + "");
- return properties;
- }
-
- @Override
- public void initialize(ConfigurableApplicationContext context) {
- ConfigurableEnvironment env = context.getEnvironment();
- env.getPropertySources().addFirst(new MapPropertySource("testcontainers", (Map) getProperties()));
- }
-
+ SpringApplication.run(SpringSessionMongoTraditionalBoot.class, args);
}
}
diff --git a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/config/MongoDbConfig.java b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/config/MongoDbConfig.java
new file mode 100644
index 00000000..67330bfd
--- /dev/null
+++ b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/config/MongoDbConfig.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.session.mongodb.examples.config;
+
+import org.testcontainers.containers.MongoDBContainer;
+
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author Yanming Zhou
+ */
+@Configuration(proxyBeanMethods = false)
+public class MongoDbConfig {
+
+ @Bean
+ @ServiceConnection
+ MongoDBContainer mongoDbContainer() {
+ return new MongoDBContainer("mongo:5.0.11");
+ }
+
+}
diff --git a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/test/java/org/springframework/session/mongodb/examples/BootTests.java b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/test/java/org/springframework/session/mongodb/examples/BootTests.java
index c91e193b..c208098a 100644
--- a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/test/java/org/springframework/session/mongodb/examples/BootTests.java
+++ b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/test/java/org/springframework/session/mongodb/examples/BootTests.java
@@ -21,7 +21,6 @@ import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.By;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
@@ -30,11 +29,8 @@ import org.openqa.selenium.WebElement;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.session.mongodb.examples.pages.HomePage;
import org.springframework.session.mongodb.examples.pages.LoginPage;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.htmlunit.webdriver.MockMvcHtmlUnitDriverBuilder;
@@ -42,11 +38,10 @@ import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Pool Dolorier
+ * @author Yanming Zhou
*/
-@ExtendWith(SpringExtension.class)
@AutoConfigureMockMvc
-@SpringBootTest(webEnvironment = WebEnvironment.MOCK)
-@ContextConfiguration(initializers = SpringSessionMongoTraditionalBoot.Initializer.class)
+@SpringBootTest
public class BootTests {
@Autowired