نظرًا لأن تطور اليوم واجه مشاكل في الأداء ، والتي قد تكون مرتبطة بتوصيل MongoDB ، فقد ألقيت نظرة فاحصة ووجدت أن شخصًا ما قد كتب هذا المحتوى ذي الصلة ، لذلك قمت بإعادة طباعته. عندما يكون لديك وقت ، يمكنك كتابة امتداد إلى SpringForall ، وفكرة الموضوع لا تزال كما هي. بفضل هذه الفتاة الجميلة ، جوي يوان لمقالها!
يوضح
يستخدم Spring Boot Spring-Boot-Starter-Data-Mongodb لتنفيذ التكوين التلقائي لـ Spring-Data-MongoDB.
ومع ذلك ، بشكل افتراضي ، لا يوفر Boot SPRING وظائف تكوين تجمع الاتصال مثل استخدام MySQL أو Redis. لذلك ، نحن بحاجة إلى إعادة كتابة mongodbfactory من قبل أنفسنا لتنفيذ امتداد تكوين المعلمة لاتصال عميل MongoDB.
تجدر الإشارة إلى أن عميل MongoDB نفسه هو تجمع اتصال ، لذلك نحتاج فقط إلى تكوين العميل.
ملف التكوين
من أجل توحيد تكوين Boot SPRING ، نحتاج إلى تكوين تكوين إعادة الكتابة في application.yml ، مع البادئة مثل spring.data.mongodb.custom (يمكن تكوين البادئة حسب الرغبة):
الربيع: البيانات: mongoDB: مخصص: المضيفين:-10.0.5.1-10.0.5.1 المنافذ:-27017-27018 نسخة متماثلة: MGSET-3590061 اسم المستخدم: Jancee Password: ABC123 DATABASE: Jancee Authentication-Database: Connection-per-host: 20 min-ber-ost.
في مثال التكوين هذا ، تم تكوين مجموعة النسخة المتماثلة ، بما في ذلك المضيفين 10.0.5.1:27017 و 10.0.5.1:27018. تشبه التكوينات الأخرى التكوين القياسي لبرنامج SPRING BOOT. بالإضافة إلى ذلك ، فإن Connections-Per-Host هو عدد الاتصالات مع العميل ، والاتصالات في المستضافة هو الحد الأدنى لعدد الاتصالات للعميل.
التفاف التكوين في الفصل
لراحة الاتصال وقابلية القراءة ، يتم لف التكوين أعلاه في فئة كيان التكوين. رمز mongoconfig.java كما يلي:
package com.feidiao.jancee.fdiot.api.config.mongo ؛ استيراد org.hibernate.validator.constraints.notblank org.springframework.validation.annotation.validated ؛ import java.util.list ؛@component@agedatedpublic class mongosettingsproperties {notblank private string database ؛ @notempty قائمة خاصة <string> المضيفين ؛ @notempty قائمة خاصة <Minger> المنافذ ؛ سلسلة النسخ المتماثل الخاص اسم المستخدم الخاص بالسلسلة الخاصة ؛ كلمة مرور السلسلة الخاصة ؛ سلسلة خاصة مصادقة DityDatabase ؛ عدد صحيح خاص minConnectionSperHost = 10 ؛ اتصالات عدد صحيح خاص = 2 ؛ mongoSettingSproperties () {} السلسلة العامة getDatabase () {return database ؛ } public void setDatabase (سلسلة قاعدة البيانات) {this.database = database ؛ } القائمة العامة <string> gethosts () {return hosts ؛ } sethosts public void (قائمة <Tring> hosts) {this.hosts = hosts ؛ } القائمة العامة <integer> getPorts () {return ports ؛ } public void setPorts (قائمة <integer> المنافذ) {this.ports = ports ؛ } السلسلة العامة getReplicaset () {return REPLICASET ؛ } public void setReplicaset (سلسلة متماثلة) {this.replicaset = REPLICASET ؛ } السلسلة العامة getUserName () {return username ؛ } public void setusername (string username) {this.userName = username ؛ } السلسلة العامة getPassword () {return password ؛ } public void setPassword (سلسلة كلمة مرور) {this.password = password ؛ } السلسلة العامة getAuthenticationDatabase () {return antanketicationDatabase ؛ } public void setAuthenticationDatabase (String AnutharicationDatabase) {this.authenticationDatabase = antainticationDatabase ؛ } integer getMinConnectionSperHost () {return minconnectionSperHost ؛ } public void setMinConnectionSperHost (Integer minConnectionSperHost) {this.minconnectionSperHost = minConnectionSperHost ؛ } integer getConnectionSperHost () {return connecteSperHost ؛ } public void setConnectionSperHost (connectionsperhost integer) {this.connectionSperHost = connectionSperHost ؛ }}الكتابة فوق mongodbfactory
بعد ذلك ، كتب MongoDBFactory Boot الأصلي من Spring Boot وإنشاء ملف جديد mongoconfig.java ، مع الكود كما يلي:
استيراد com.mongodb.mongoclient ؛ استيراد com.mongodb.mongoclientoptions ؛ استيراد com.mongodb.mongocredential ؛ استيراد com.mongodb.serveraddress ؛ استيراد org.springframework.beans.factory.annotation.autowired ؛ استيراد org.springframework.boot.context.properties.ConfigurationProperties ؛ استيراد org.springframework.context.antation.bean ؛ استيراد org.springframework.context.annotation.configuration org.springframework.data.mongodb.core.simplemongodbfactory ؛ استيراد java.util.arraylist ؛ استيراد java.util.list ؛ configurationpublic class mongoconfig bean @configurationProperties (prefix = "spring.data.mongodb.custom") mongoSettingSproperties mongosettingsproperties () {return new mongoSettingSproperties () ؛ } // اكتب فوق mongodbfactorybean mongodbfactory mongodbfactory () {// تكوين العميل (عدد الاتصالات ، التحقق من مجموعة النسخ المتماثلة) mongoclientoptions.builder builder = new mongoclientoptions.builder () ؛ builder.connectionsperhost (mongoSttingSproperties.getConnectionSperHost ()) ؛ Builder.MinConnectionSperHost (mongoSttingSproperties.getMinConnectionSperHost ()) ؛ if (mongoSttingSproperties.getReplicaset ()! = null) {builder.requiredReplicasEtName (mongoSettingSproperties.getReplicaset ()) ؛ } mongoclientoptions mongoclientoptions = builder.build () ؛ // قائمة قائمة عناوين MongoDB <ServerAdDress> serverAddresses = new ArrayList <> () ؛ لـ (مضيف سلسلة: mongoSettingSproperties.gethosts ()) {integer index = mongoSettingSproperties.gethosts (). indexof (host) ؛ منفذ عدد صحيح = mongoSettingSproperties.getPorts (). get (index) ؛ ServerAddress serveraddress = new serveraddress (مضيف ، منفذ) ؛ serveraddresses.add (serveraddress) ؛ } system.out.println ("serveraddresses:" + serveraddresses.toString ()) ؛ // قائمة مصادقة الاتصال <Mongocredential> mongocredentiallist = new ArrayList <> () ؛ if (mongoSttingSproperties.getUserName ()! = null) {mongocredentiallist.add (mongocredential.createscramsha1credential (mongosettingsproperties.getusername () ، mongosettingsproperties.getauthenticationDatabase ()! = null. mongoSettingSproperties.getAuthenticationDatabase (): mongoSettingSproperties.getDatabase () ، mongostingsproperties.getPassword (). Thararray ())) ؛ } system.out.println ("MongocredentialList:" + mongocredentiallist.toString ()) ؛ // إنشاء العميل والمصنع mongoclient mongoclient = جديد mongoclient (serveraddresses ، mongocredentiallist ، mongoclientoptions) ؛ mongodbfactory mongodbfactory = جديد simplemongodbfactory (mongoclient ، mongostingsproperties.getDatabase ()) ؛ إرجاع mongodbfactory. }}هنا ، عند تطبيق اتصال MongoDB ، يتم تعيين المعلمات التي تم تكوينها في التكوين السابق. وفقًا لموقفك الفعلي ، يمكنك إضافة وتعديل معلمات التكوين التي تحتاجها عندما يكون SimplEmongoDBFactory جديدًا.
في هذه المرحلة ، تم الانتهاء من جميع التكوينات وتم إجراء الاختبارات.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.