MongoDB - bu ochiq kodli NoSQL hujjatli ma'lumotlar bazasi bo'lib, u an'anaviy jadval asosidagi ma'lumotlar o'rniga JSON-ga o'xshash sxemani ishlatadi. Spring Boot MongoDB bilan ishlash uchun bir necha qo'shimcha vositalarni o'z ichiga oladi, jumladan spring-boot-starter-data-mongodb va spring-boot-starter-data-mongodb-reactive "starter"larini.
MongoDB ma'lumotlar bazasiga ulanish
MongoDB ma'lumotlar bazalariga kirish uchun org.springframework.data.mongodb.MongoDatabaseFactory avtokonfiguratsiya qilingan nusxasini kiritish mumkin. Standart holatda nusxa mongodb://localhost/test manzili orqali MongoDB serveriga ulanishga harakat qiladi. Quyidagi misolda MongoDB ma'lumotlar bazasiga qanday ulanish ko'rsatilgan:
@Component public class MyBean { private final MongoDatabaseFactory mongo; public MyBean(MongoDatabaseFactory mongo) { this.mongo = mongo; } }
@Component class MyBean(private val mongo: MongoDatabaseFactory) { }
Agar siz o'zingizning MongoClientni aniqlagan bo'lsangiz, u mos MongoDatabaseFactoryni avtokonfiguratsiya qilish uchun ishlatiladi.
Avtokonfiguratsiya qilingan MongoClient MongoClientSettings bean yordamida yaratiladi. Agar siz o'z MongoClientSettingsni aniqlagan bo'lsangiz, u o'zgartirilmasdan ishlatiladi va spring.data.mongodb xususiyatlari e'tiborsiz qoladi. Aks holda, MongoClientSettings avtomatik ravishda sozlanadi va unga spring.data.mongodb xususiyatlari qo'llaniladi. Har qanday holatda, siz MongoClientSettings konfiguratsiyasini nozik sozlash uchun bitta yoki bir nechta MongoClientSettingsBuilderCustomizer beanlarini e'lon qilishingiz mumkin. Har biri MongoClientSettingsni qurish uchun ishlatiladigan MongoClientSettings.Builder orqali tartib bilan chaqiriladi.
URL manzilini o'zgartirish va konfiguratsiyaga qo'shimcha parametrlarni, masalan, replica set qo'shish uchun spring.data.mongodb.uri xususiyatini o'rnatishingiz mumkin, quyidagi misolda ko'rsatilganidek:
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"
Boshqa tomondan, alohida xususiyatlar orqali ulanish tafsilotlarini belgilashingiz mumkin. Masalan, application.properties faylida quyidagi parametrlarga e'lon qilish mumkin:
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 belgilangan bo'lmasa, standart qiymat
27017 ishlatiladi. Avvalgi misoldan bu qatorni olib tashlash mumkin.
MongoDatabaseFactory o'rniga
MongoClient beanini kiritishingiz mumkin. Agar MongoDB bilan ulanish jarayonini to'liq nazorat qilmoqchi bo'lsangiz, qo'shimcha ravishda o'z
MongoDatabaseFactory yoki
MongoClient beanini e'lon qilishingiz mumkin.
MongoTemplate
Spring Data MongoDB > JdbcTemplatega juda o'xshash tuzilishga ega bo'lgan MongoTemplate klassini taqdim etadi. JdbcTemplateda bo'lgani kabi, Spring Boot avtomatik ravishda quyida ko'rsatilgandek injection uchun bean qo'shadi:
@Component public class MyBean { private final MongoTemplate mongoTemplate; public MyBean(MongoTemplate mongoTemplate) { this.mongoTemplate = mongoTemplate; } }
@Component class MyBean(private val mongoTemplate: MongoTemplate) { }
Spring Data MongoDB Repositoriyalari
Spring Data MongoDB uchun repositorylarni qo'llab-quvvatlash vositalarini o'z ichiga oladi. JPA uchun repositorylar bilan bir xil bo'lib, asosiy prinsip - bu so'rovlar avtomatik ravishda metod nomlariga asoslangan holda quriladi.
Aslida, Spring Data JPA va Spring Data MongoDB bir xil umumiy infratuzilmaga ega. Avvalgi maqolada keltirilgan JPA misolini olish va, agar City endi MongoDB ma'lumotlari klassi bo'lsa, JPA obyekti @Entity annotatsiyasi bilan emas, quyidagi misolda ko'rsatilgandek xuddi shunday ishlaydi:
public interface CityRepository extends Repository<City, Long> { Page<City> findAll(Pageable pageable); City findByNameAndStateAllIgnoringCase(String name, String state); }
interface CityRepository : Repository<City?, Long?> { fun findAll(pageable: Pageable?): Page<City?>? fun findByNameAndStateAllIgnoringCase(name: String?, state: String?): City? }
@EntityScan annotatsiyasi yordamida sozlash mumkin.
Ichki Mongo tizimi
Spring Boot ichki Mongo tizimi uchun avtokonfiguratsiyani taqdim etadi. Bu Spring Boot ilovangizda ishlatish uchun, de.flapdoodle.embed:de.flapdoodle.embed.mongoga bog'liq rivojlanish qo'shing va spring.mongodb.embedded.version xususiyatini ilovaning ishlab chiqarish muhitida foydalanadigan MongoDB versiyasiga moslang.
DownloadConfigBuilderCustomizer beanini aniqlab tuzatish mumkin.
Mongo tinglaydigan portni konfiguratsiyaga spring.data.mongodb.port xususiyatini o'rnatib qo'shishingiz mumkin. Tasodifiy belgilanadigan bo'sh portdan foydalanish uchun 0 qiymatini ishlating. MongoAutoConfiguration yordamida yaratilgan MongoClient avtomatik ravishda tasodifiy belgilanadigan portdan foydalanish uchun sozlanadi.
Agar classpathda SLF4J mavjud bo'lsa, Mongo tomonidan yaratilgan chiqishlar avtomatik ravishda org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongo nomli loglash menejeriga yo'naltiriladi.
Mongo nusxasining konfiguratsiyasini va loglarni yo'naltirishni boshqarish uchun o'z IMongodConfig va IRuntimeConfig beanlaringizni e'lon qilishingiz mumkin. Yuklash konfiguratsiyasini DownloadConfigBuilderCustomizer beanini e'lon qilish orqali sozlashingiz mumkin.
GO TO FULL VERSION