Karena pengembangan saat ini mengalami masalah kinerja, yang mungkin terkait dengan koneksi MongoDB, saya melihat lebih dekat dan menemukan bahwa seseorang telah menulis konten terkait ini, jadi saya mencetak ulang. Ketika Anda punya waktu, Anda dapat menulis ekstensi ke SpringForall, dan ide subjek masih sama. Terima kasih kepada gadis cantik ini, Joy Yuan untuk artikelnya!
menjelaskan
Spring Boot menggunakan spring-boot-starter-data-mongoDB untuk mengimplementasikan konfigurasi otomatis Spring-Data-MongoDB.
Namun, secara default, Spring Boot tidak menyediakan fungsi konfigurasi kumpulan koneksi seperti menggunakan MySQL atau Redis. Oleh karena itu, kita perlu menulis ulang MongoDBFactory sendirian untuk mengimplementasikan ekstensi konfigurasi parameter koneksi klien MongoDB.
Perlu dicatat bahwa klien MongoDB itu sendiri adalah kumpulan koneksi, jadi kita hanya perlu mengonfigurasi klien.
File konfigurasi
Untuk menyatukan konfigurasi boot musim semi, kita perlu mengonfigurasi konfigurasi yang ditulis ulang menjadi application.yml, dengan awalan sebagai spring.data.mongodb.custom (awalan dapat dikonfigurasi sesuka hati):
Spring: Data: MongoDB: Kustom: Hosts:-10.0.5.1-10.0.5.1 Ports:-27017-27018 Replika-set: MGSET-3590061 Nama Pengguna: Jancee Kata Sandi: ABC123 Database: Jancee-HOSTICATION-DATABASE: AdminNET-CERNOKS-C-HOST: 20 Menit: 20 Menit: 20 Menit: 20 Menit: 20 Minon-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c-C-C-C-C-C-H-C-LEIMUMP A Seb-H-I I I I I I S-
Dalam contoh konfigurasi ini, set replika dikonfigurasi, termasuk host 10.0.5.1:27017 dan 10.0.5.1:27018. Konfigurasi lain mirip dengan konfigurasi standar Spring Boot. Selain itu, koneksi-per-host adalah jumlah koneksi ke klien, dan in-connection-per-host adalah jumlah minimum koneksi ke klien.
Konfigurasi pembungkus ke kelas
Untuk kenyamanan panggilan dan keterbacaan, konfigurasi di atas dibungkus menjadi kelas entitas konfigurasi. Kode mongoconfig.java adalah sebagai berikut:
Paket com.feidiao.jancee.fdiot.api.config.mongo; impor org.hibernate.validator.constraints.notblank; impor org.hibernate.validator.constraBs.notempty; impor org.springframework.stereotipe.stereotype.constraints.notempty; Impor org. java.util.list;@component@validatedPublic class mongoSettingsproperties {@notblank private string database; @NotEempty Private List <String> hosts; @NotEempty Private List <Integer> port; replika string pribadi; nama pengguna string pribadi; kata sandi string pribadi; Private String AuthenticationDatabase; Private Integer MinConnectionPerHost = 10; Private Integer ConnectionsPerHost = 2; public mongoSettingsProperties () {} public string getDatabase () {return database; } public void setDatabase (string database) {this.database = database; } Daftar Publik <String> getHosts () {return hosts; } public void setHosts (Daftar <String> hosts) {this.hosts = hosts; } Daftar Publik <Integer> getports () {port return; } public void setPorts (Daftar <Integer> port) {this.ports = port; } public String getRepLicAset () {return replicaset; } public void setRepLicaset (String replicaset) {this.replicaset = replicaset; } public string getUserName () {return username; } public void setusername (string username) {this.username = username; } public string getPassword () {return kata sandi; } public void setPassword (kata sandi string) {this.password = kata sandi; } public string getAuthenticationDatabase () {return authenticationDatabase; } public void setAuthenticationDatabase (String authenticationDatabase) {this.authenticationDatabase = authenticationDatabase; } public integer getMinconnectionPerHost () {return MinConnectionPerHost; } public void setMinconnectionPerHost (integer MINConnectionPerHost) {this.minconnectionPerHost = MinConnectionPerHost; } public integer getConnectionPerHost () {return connectionPerHost; } public void setConnectionPerHost (Integer ConnectionPerHost) {this.connectionPerHost = ConnectionPerHost; }}Timpa MongoDBFactory
Selanjutnya, MongoDBFactory Bean asli Spring Boot dan buat file baru mongoconfig.java, dengan kode sebagai berikut:
impor com.mongodb.mongoclient; impor com.mongodb.mongoclientoptions; impor com.mongodb.mongocredential; impor com.mongodb.serveraddress; impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework.boot.context.properties.configurationproperties; impor org.springframework.context.annotation.bean; impor org.springframework.context.annotation.configuration; impor org.springframework.data.modbacory; org.springframework.data.mongodb.core.simplemongoDbfactory; impor java.util.arraylist; impor java.util.list; @configurationpublic mongoConfig {// inject configuration entity @Autowired private Mongosettingspingingspingingspinging Mongosettingspinging Mongosettingspinging; @Bean @configurationproperties (prefix = "spring.data.mongodb.custom") mongoSettingsproperties mongoSettingsproperties () {return new mongoSettingsproperties (); } // Timpa mongoDbfactory default @Bean MongoDBFactory mongoDbFactory () {// Konfigurasi klien (jumlah koneksi, verifikasi cluster replika) mongoclientoptions.builder builder = mongoclientoptions.builder (); builder.connectionperhost (mongoSettingsproperties.getConnectionPerHost ()); builder.minconnectionperhost (MongoSettingsproperties.getMinconnectionsperhost ()); if (mongoSettingsproperties.getRepLicaset ()! = null) {builder.requiredRepLicASetName (mongoSettingsproperties.getRepLicaset ()); } MongoclientOptions mongoclientOptions = builder.build (); // Daftar Daftar Alamat MongoDB <ServerAddress> ServerAddresses = ArrayList baru <> (); untuk (host string: mongoSettingsproperties.gethosts ()) {integer index = mongoSettingsproperties.gethosts (). indexOf (host); Integer port = mongoSettingsproperties.getports (). Get (index); Serveraddress serveraddress = baru serveraddress (host, port); serveraddresses.add (serveraddress); } System.out.println ("ServerAddresses:" + ServerAddresses.toString ()); // Daftar Otentikasi Koneksi <Mongocredential> MongocredentiAllist = ArrayList baru <> (); if (mongoSettingsproperties.getUserName ()! = null) {mongocredentiallist.add (mongocredential.createScramsha1credential (mongoSettingsproperties.getusername (), mongoSettingsproperties.getAuthenticationDatabase () (), mongoSettings.getAuthenticationDatabase () ()! = nuhule? mongoSettingsproperties.getAuthenticationDatabase (): mongoSettingsproperties.getDatabase (), mongoSettingsproperties.getPassword (). tochararray ())); } System.out.println ("MongocredentiAllist:" + MongocredentiAllist.ToString ()); // Buat klien dan pabrik mongoclient mongoclient = mongoclient baru (serveraddresses, mongocredentiallist, mongoclientoptions); MongoDBFactory MongoDBFactory = new SimpleMongoDBFactory (Mongoclient, MongoSettingsproperties.getDatabase ()); return MongoDBFactory; }}Di sini, ketika koneksi MongoDB diimplementasikan, parameter yang dikonfigurasi dalam konfigurasi sebelumnya diatur. Menurut situasi Anda yang sebenarnya, Anda dapat menambah dan memodifikasi parameter konfigurasi yang Anda butuhkan saat SimpleMongoDbFactory baru.
Pada titik ini, semua konfigurasi telah selesai dan tes telah dijalankan.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.