fix: move to spring-data-mongodb (#12089)
This commit is contained in:
parent
c3e0c5b1fb
commit
31a903b552
@ -73,6 +73,12 @@
|
|||||||
<artifactId>querydsl-apt</artifactId>
|
<artifactId>querydsl-apt</artifactId>
|
||||||
<version>${querydsl.version}</version>
|
<version>${querydsl.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>de.flapdoodle.embed</groupId>
|
||||||
|
<artifactId>de.flapdoodle.embed.mongo</artifactId>
|
||||||
|
<version>${embed.mongo.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
@ -103,6 +109,7 @@
|
|||||||
<mongodb-reactivestreams.version>4.1.0</mongodb-reactivestreams.version>
|
<mongodb-reactivestreams.version>4.1.0</mongodb-reactivestreams.version>
|
||||||
<projectreactor.version>3.2.0.RELEASE</projectreactor.version>
|
<projectreactor.version>3.2.0.RELEASE</projectreactor.version>
|
||||||
<mongodb-driver.version>4.0.5</mongodb-driver.version>
|
<mongodb-driver.version>4.0.5</mongodb-driver.version>
|
||||||
|
<embed.mongo.version>3.2.6</embed.mongo.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</project>
|
</project>
|
@ -3,13 +3,14 @@ package com.baeldung.projection.model;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.mongodb.core.mapping.Document;
|
import org.springframework.data.mongodb.core.mapping.Document;
|
||||||
import org.springframework.data.mongodb.core.mapping.MongoId;
|
import org.springframework.data.mongodb.core.mapping.MongoId;
|
||||||
|
|
||||||
@Document(collection = "inventory")
|
@Document(collection = "inventory")
|
||||||
public class Inventory {
|
public class Inventory {
|
||||||
|
|
||||||
@MongoId
|
@Id
|
||||||
private String id;
|
private String id;
|
||||||
private String item;
|
private String item;
|
||||||
private String status;
|
private String status;
|
@ -1,54 +1,15 @@
|
|||||||
package com.baeldung.projection;
|
package com.baeldung.projection;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.junit.jupiter.api.AfterEach;
|
|
||||||
import org.springframework.data.mongodb.core.MongoTemplate;
|
|
||||||
import org.springframework.util.SocketUtils;
|
|
||||||
|
|
||||||
import com.baeldung.projection.model.InStock;
|
import com.baeldung.projection.model.InStock;
|
||||||
import com.baeldung.projection.model.Inventory;
|
import com.baeldung.projection.model.Inventory;
|
||||||
import com.baeldung.projection.model.Size;
|
import com.baeldung.projection.model.Size;
|
||||||
import com.mongodb.client.MongoClients;
|
|
||||||
|
|
||||||
import de.flapdoodle.embed.mongo.MongodExecutable;
|
|
||||||
import de.flapdoodle.embed.mongo.MongodStarter;
|
|
||||||
import de.flapdoodle.embed.mongo.config.ImmutableMongodConfig;
|
|
||||||
import de.flapdoodle.embed.mongo.config.MongodConfig;
|
|
||||||
import de.flapdoodle.embed.mongo.config.Net;
|
|
||||||
import de.flapdoodle.embed.mongo.distribution.Version;
|
|
||||||
import de.flapdoodle.embed.process.runtime.Network;
|
|
||||||
|
|
||||||
abstract class AbstractTestProjection {
|
abstract class AbstractTestProjection {
|
||||||
|
|
||||||
private static final String CONNECTION_STRING = "mongodb://%s:%d";
|
|
||||||
|
|
||||||
protected MongodExecutable mongodExecutable;
|
|
||||||
protected MongoTemplate mongoTemplate;
|
|
||||||
|
|
||||||
@AfterEach
|
|
||||||
void clean() {
|
|
||||||
mongodExecutable.stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
void setUp() throws IOException {
|
|
||||||
String ip = "localhost";
|
|
||||||
int port = SocketUtils.findAvailableTcpPort();
|
|
||||||
|
|
||||||
ImmutableMongodConfig mongodbConfig = MongodConfig.builder()
|
|
||||||
.version(Version.Main.PRODUCTION)
|
|
||||||
.net(new Net(ip, port, Network.localhostIsIPv6()))
|
|
||||||
.build();
|
|
||||||
|
|
||||||
MongodStarter starter = MongodStarter.getDefaultInstance();
|
|
||||||
mongodExecutable = starter.prepare(mongodbConfig);
|
|
||||||
mongodExecutable.start();
|
|
||||||
mongoTemplate = new MongoTemplate(MongoClients.create(String.format(CONNECTION_STRING, ip, port)), "test");
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Inventory> getInventories() {
|
public List<Inventory> getInventories() {
|
||||||
Inventory journal = new Inventory();
|
Inventory journal = new Inventory();
|
||||||
journal.setItem("journal");
|
journal.setItem("journal");
|
@ -10,20 +10,27 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||||
import org.springframework.data.mongodb.core.query.Query;
|
import org.springframework.data.mongodb.core.query.Query;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||||
|
|
||||||
|
import com.baeldung.projection.config.ProjectionConfig;
|
||||||
import com.baeldung.projection.model.InStock;
|
import com.baeldung.projection.model.InStock;
|
||||||
import com.baeldung.projection.model.Inventory;
|
import com.baeldung.projection.model.Inventory;
|
||||||
import com.baeldung.projection.model.Size;
|
import com.baeldung.projection.model.Size;
|
||||||
|
|
||||||
@SpringBootTest
|
@ExtendWith(SpringExtension.class)
|
||||||
|
@ContextConfiguration(classes = ProjectionConfig.class)
|
||||||
public class MongoTemplateProjectionUnitTest extends AbstractTestProjection {
|
public class MongoTemplateProjectionUnitTest extends AbstractTestProjection {
|
||||||
|
|
||||||
@BeforeEach
|
@Autowired
|
||||||
void setup() throws Exception {
|
private MongoTemplate mongoTemplate;
|
||||||
super.setUp();
|
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setup() {
|
||||||
List<Inventory> inventoryList = getInventories();
|
List<Inventory> inventoryList = getInventories();
|
||||||
|
|
||||||
mongoTemplate.insert(inventoryList, Inventory.class);
|
mongoTemplate.insert(inventoryList, Inventory.class);
|
@ -10,24 +10,26 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||||
|
|
||||||
|
import com.baeldung.projection.config.ProjectionConfig;
|
||||||
import com.baeldung.projection.model.InStock;
|
import com.baeldung.projection.model.InStock;
|
||||||
import com.baeldung.projection.model.Inventory;
|
import com.baeldung.projection.model.Inventory;
|
||||||
import com.baeldung.projection.model.Size;
|
import com.baeldung.projection.model.Size;
|
||||||
import com.baeldung.projection.repository.InventoryRepository;
|
import com.baeldung.projection.repository.InventoryRepository;
|
||||||
|
|
||||||
@SpringBootTest
|
@ExtendWith(SpringExtension.class)
|
||||||
|
@ContextConfiguration(classes = ProjectionConfig.class)
|
||||||
public class RepositoryProjectionUnitTest extends AbstractTestProjection {
|
public class RepositoryProjectionUnitTest extends AbstractTestProjection {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private InventoryRepository inventoryRepository;
|
private InventoryRepository inventoryRepository;
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setup() throws Exception {
|
void setup() {
|
||||||
super.setUp();
|
|
||||||
|
|
||||||
List<Inventory> inventoryList = getInventories();
|
List<Inventory> inventoryList = getInventories();
|
||||||
|
|
||||||
inventoryRepository.saveAll(inventoryList);
|
inventoryRepository.saveAll(inventoryList);
|
@ -0,0 +1,43 @@
|
|||||||
|
package com.baeldung.projection.config;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||||
|
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
|
||||||
|
import org.springframework.util.SocketUtils;
|
||||||
|
|
||||||
|
import com.mongodb.client.MongoClients;
|
||||||
|
|
||||||
|
import de.flapdoodle.embed.mongo.MongodExecutable;
|
||||||
|
import de.flapdoodle.embed.mongo.MongodStarter;
|
||||||
|
import de.flapdoodle.embed.mongo.config.ImmutableMongodConfig;
|
||||||
|
import de.flapdoodle.embed.mongo.config.MongodConfig;
|
||||||
|
import de.flapdoodle.embed.mongo.config.Net;
|
||||||
|
import de.flapdoodle.embed.mongo.distribution.Version;
|
||||||
|
import de.flapdoodle.embed.process.runtime.Network;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@ComponentScan(basePackages = "com.baeldung.projection")
|
||||||
|
@EnableMongoRepositories(basePackages = "com.baeldung.projection.repository")
|
||||||
|
public class ProjectionConfig {
|
||||||
|
|
||||||
|
private static final String CONNECTION_STRING = "mongodb://%s:%d";
|
||||||
|
private static final String HOST = "localhost";
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public MongoTemplate mongoTemplate() throws Exception {
|
||||||
|
int randomPort = SocketUtils.findAvailableTcpPort();
|
||||||
|
|
||||||
|
ImmutableMongodConfig mongoDbConfig = MongodConfig.builder()
|
||||||
|
.version(Version.Main.PRODUCTION)
|
||||||
|
.net(new Net(HOST, randomPort, Network.localhostIsIPv6()))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
MongodStarter starter = MongodStarter.getDefaultInstance();
|
||||||
|
MongodExecutable mongodExecutable = starter.prepare(mongoDbConfig);
|
||||||
|
mongodExecutable.start();
|
||||||
|
|
||||||
|
return new MongoTemplate(MongoClients.create(String.format(CONNECTION_STRING, HOST, randomPort)), "mongo_auth");
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user