MongoDB β ΡΡΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
NoSQL Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ JSON-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΡ
Π΅ΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ
ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ
Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°Ρ
. Spring Boot ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ MongoDB, Π²ΠΊΠ»ΡΡΠ°Ρ "ΡΡΠ°ΡΡΠ΅ΡΡ" spring-boot-starter-data-mongodb
ΠΈ spring-boot-starter-data-mongodb-reactive
.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ MongoDB
ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½ΡΡ
MongoDB ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄ΡΠΈΡΡ Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΡΡ org.springframework.data.mongodb.MongoDatabaseFactory
. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ MongoDB ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ mongodb://localhost/test
. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
MongoDB:
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final MongoDatabaseFactory mongo;
public MyBean(MongoDatabaseFactory mongo) {
this.mongo = mongo;
}
// ...
public MongoCollection<Document> someMethod() {
MongoDatabase db = this.mongo.getMongoDatabase();
return db.getCollection("users");
}
}
import com.mongodb.client.MongoCollection
import org.bson.Document
import org.springframework.data.mongodb.MongoDatabaseFactory
import org.springframework.stereotype.Component
@Component
class MyBean(private val mongo: MongoDatabaseFactory) {
// ...
fun someMethod(): MongoCollection<Document> {
val db = mongo.mongoDatabase
return db.getCollection("users")
}
}
ΠΡΠ»ΠΈ Π±ΡΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ MongoClient
, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ΅ΠΉ MongoDatabaseFactory
.
ΠΠ²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ MongoClient
ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ½Π° MongoClientSettings
. ΠΡΠ»ΠΈ Π±ΡΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ MongoClientSettings
, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° spring.data.mongodb
Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Ρ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ MongoClientSettings
Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ ΠΈ ΠΊ Π½Π΅ΠΌΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° spring.data.mongodb
. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΠ½ΠΎΠ² MongoClientSettingsBuilderCustomizer
Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ½ΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ MongoClientSettings
. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ
Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ ΡΠ΅ΡΠ΅Π· MongoClientSettings.Builder
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ MongoClientSettings
.
ΠΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ spring.data.mongodb.uri
, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ URL-Π°Π΄ΡΠ΅Ρ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ ΡΠ΅ΠΏΠ»ΠΈΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
spring.data.mongodb.uri=mongodb://user:secret@mongo1.example.com:12345,mongo2.example.com:23456/test
spring:
data:
mongodb:
uri: "mongodb://user:secret@mongo1.example.com:12345,mongo2.example.com:23456/test"
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΡ
ΡΠ²ΠΎΠΉΡΡΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ application.properties
:
spring.data.mongodb.host=mongoserver.example.com
spring.data.mongodb.port=27017
spring.data.mongodb.database=test
spring.data.mongodb.username=user
spring.data.mongodb.password=secret
spring:
data:
mongodb:
host: "mongoserver.example.com"
port: 27017
database: "test"
username: "user"
password: "secret"
spring.data.mongodb.port
Π½Π΅ Π·Π°Π΄Π°Π½, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 27017
. ΠΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΡ ΡΡΡΠΎΠΊΡ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π½Π΅Π΅.MongoClient
Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ MongoDatabaseFactory
. ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ MongoDB, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π±ΠΈΠ½ MongoDatabaseFactory
ΠΈΠ»ΠΈ MongoClient
.MongoTemplate
Spring Data MongoDB> ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΊΠ»Π°ΡΡ MongoTemplate
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆ Π½Π° JdbcTemplate
ΠΈΠ· Spring. ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ JdbcTemplate
, Spring Boot Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π±ΠΈΠ½ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final MongoTemplate mongoTemplate;
public MyBean(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
// ...
public MongoCollection<Document> someMethod() {
return this.mongoTemplate.getCollection("users");
}
}
import com.mongodb.client.MongoCollection
import org.bson.Document
import org.springframework.data.mongodb.core.MongoTemplate
import org.springframework.stereotype.Component
@Component
class MyBean(private val mongoTemplate: MongoTemplate) {
// ...
fun someMethod(): MongoCollection<Document> {
return mongoTemplate.getCollection("users")
}
}
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Spring Data MongoDB
Spring Data ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π΄Π»Ρ MongoDB. ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ Π΄Π»Ρ JPA, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ°Π½Π΅Π΅, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π°ΠΏΡΠΎΡΡ ΡΡΡΠΎΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠΌΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΈ Spring Data JPA, ΠΈ Spring Data MongoDB ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΎΠ±ΡΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ. ΠΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ JPA ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠΈ ΠΈ, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ City
ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ Π΄Π°Π½Π½ΡΡ
MongoDB, Π° Π½Π΅ JPA-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Entity
, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.Repository;
public interface CityRepository extends Repository<City, Long> {
Page<City> findAll(Pageable pageable);
City findByNameAndStateAllIgnoringCase(String name, String state);
}
import org.springframework.data.domain.Page
import org.springframework.data.domain.Pageable
import org.springframework.data.repository.Repository
interface CityRepository :
Repository<City?, Long?> {
fun findAll(pageable: Pageable?): Page<City?>?
fun findByNameAndStateAllIgnoringCase(name: String?, state: String?): City?
}
@EntityScan
.ΠΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Mongo
Spring Boot ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Mongo. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Spring Boot, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ de.flapdoodle.embed:de.flapdoodle.embed.mongo
ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ spring.mongodb.embedded.version
Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ MongoDB, ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ.
DownloadConfigBuilderCustomizer
.ΠΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π΅ΡΡΡ Mongo, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ spring.data.mongodb.port
. ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°, Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0. MongoClient
, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ MongoAutoConfiguration
, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°, Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΡΠ»ΠΈ Π² classpath Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ SLF4J, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Mongo, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΡΡΡΡΡ Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongo
.
ΠΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π±ΠΈΠ½Ρ IMongodConfig
ΠΈ IRuntimeConfig
, ΡΡΠΎΠ±Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Mongo ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΡΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π±ΠΈΠ½Π° DownloadConfigBuilderCustomizer
.