เนื่องจากการพัฒนาในวันนี้พบปัญหาด้านประสิทธิภาพซึ่งอาจเกี่ยวข้องกับการเชื่อมต่อ MongoDB ฉันจึงมองอย่างใกล้ชิดและพบว่ามีคนเขียนเนื้อหาที่เกี่ยวข้องนี้ดังนั้นฉันจึงพิมพ์ซ้ำ เมื่อคุณมีเวลาคุณสามารถเขียนส่วนขยายไปยัง Springforall และแนวคิดเรื่องยังคงเหมือนเดิม ขอบคุณสาวสวยคนนี้ Joy Yuan สำหรับบทความของเธอ!
อธิบาย
Spring Boot ใช้ Spring-Boot-Starter-Data-MongoDB เพื่อใช้การกำหนดค่าอัตโนมัติของ Spring-Data-MongoDB
อย่างไรก็ตามโดยค่าเริ่มต้น Spring Boot ไม่ได้ให้ฟังก์ชั่นการกำหนดค่าพูลการเชื่อมต่อเช่นใช้ MySQL หรือ REDIS ดังนั้นเราจำเป็นต้องเขียน Mongodbfactory ใหม่ด้วยตัวเองเพื่อใช้ส่วนขยายการกำหนดค่าพารามิเตอร์ของการเชื่อมต่อไคลเอนต์ MongoDB
ควรสังเกตว่าไคลเอนต์ MongoDB นั้นเป็นกลุ่มการเชื่อมต่อดังนั้นเราจึงต้องกำหนดค่าไคลเอนต์เท่านั้น
ไฟล์กำหนดค่า
เพื่อรวมการกำหนดค่าของสปริงบูตเราจำเป็นต้องกำหนดค่าการกำหนดค่าที่เขียนใหม่ลงใน Application.yml โดยมีคำนำหน้าเป็น Spring.data.mongodb.custom (คำนำหน้าสามารถกำหนดค่าได้ที่จะ):
ฤดูใบไม้ผลิ: ข้อมูล: MongoDB: แบบกำหนดเอง: โฮสต์:-10.0.5.1-10.0.5.1 พอร์ต:-27017-27018 แบบจำลอง: MGSET-3590061 ชื่อผู้ใช้: รหัสผ่าน Jancee: ABC123 ฐานข้อมูล: การตรวจสอบความถูกต้องของ Jancee
ในตัวอย่างการกำหนดค่านี้มีการกำหนดค่าชุดจำลองรวมถึงโฮสต์ 10.0.5.1:27017 และ 10.0.5.1:27018 การกำหนดค่าอื่น ๆ คล้ายกับการกำหนดค่ามาตรฐานของ Spring Boot นอกจากนี้การเชื่อมต่อต่อโฮสต์คือจำนวนการเชื่อมต่อกับไคลเอนต์และการเชื่อมต่อต่อโฮสต์คือจำนวนขั้นต่ำของการเชื่อมต่อกับไคลเอนต์
การกำหนดค่าการกำหนดค่าลงในชั้นเรียน
เพื่อความสะดวกในการโทรและการอ่านการกำหนดค่าข้างต้นจะถูกห่อหุ้มลงในคลาสเอนทิตีการกำหนดค่า รหัส Mongoconfig.java มีดังนี้:
แพ็คเกจ com.feidiao.jancee.fdiot.api.config.mongo; นำเข้า org.hibernate.validator.constraints.notblank; นำเข้า org.hibernate.validator.constraints.notespy; org.springframework.validation.annotation.validated; นำเข้า java.util.list;@component@validatedPublic คลาส mongosettingsproperties {@notblank ฐานข้อมูลสตริงส่วนตัว; @NotEmpty List <String> โฮสต์; @NotEmpty List <Integer> พอร์ต; แบบจำลองสตริงส่วนตัว; ชื่อผู้ใช้สตริงส่วนตัว; รหัสผ่านสตริงส่วนตัว สตริงส่วนตัว AuthenticationDatabase; MinConnections Private Integer = 10; การเชื่อมต่อจำนวนเต็มส่วนตัว PERSPERHOST = 2; Public MongosettingsProperties () {} สตริงสาธารณะ getDatabase () {ฐานข้อมูลส่งคืน; } โมฆะสาธารณะ setDatabase (ฐานข้อมูลสตริง) {this.database = ฐานข้อมูล; } รายการสาธารณะ <String> getHosts () {return hosts; } โมฆะสาธารณะ sethosts (รายการ <string> โฮสต์) {this.hosts = โฮสต์; } รายการสาธารณะ <integer> getPorts () {ส่งคืนพอร์ต; } โมฆะสาธารณะ setports (รายการ <teger> พอร์ต) {this.ports = พอร์ต; } สตริงสาธารณะ getReflicAset () {return replicaset; } โมฆะสาธารณะ setreplicAset (string replicaset) {this.replicaset = replicaset; } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } สตริงสาธารณะ getAuthenticationDatabase () {return authenticationDatabase; } โมฆะสาธารณะ setauthenticationDatabase (string AuthenticationDatabase) {this.authenticationDatabase = AuthenticationDatabase; } จำนวนเต็มสาธารณะ getMinconnectionsperhost () {return minconnectionsperhost; } โมฆะสาธารณะ setMinconnectionsperhost (จำนวนเต็ม minconnectionsperhost) {this.minconnectionsperhost = minconnectionsperhost; } จำนวนเต็มสาธารณะ getConnectionsPerhost () {return connectionsPerhost; } โมฆะสาธารณะ setConnectionsPerhost (การเชื่อมต่อจำนวนเต็ม) {this.connectionsperhost = connectionsperhost; -เขียนทับ Mongodbfactory
ถัดไปการเขียนทับถั่ว Mongodbfactory ดั้งเดิมของ 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.annotation.bean; นำเข้า org.springframework.context.annotation.configuration; org.springframework.data.mongodb.core.simplemongodbfactory นำเข้า java.util.arraylist; นำเข้า java.util.list; @configurationpublic ชั้นเรียน Mongoconfig {// // @Bean @ConfigurationProperties (คำนำหน้า = "Spring.data.mongodb.custom") MongosettingsProperties MongosettingsProperties () {ส่งคืน Mongosettingsproperties ใหม่ (); } // เขียนทับ MongoDbfactory เริ่มต้น @Bean Mongodbfactory Mongodbfactory () {// การกำหนดค่าไคลเอ็นต์ (จำนวนการเชื่อมต่อการตรวจสอบการจำลองคลัสเตอร์แบบจำลอง) Mongoclientoptions.builder Builder = ใหม่ mongoclientoptions.builder (); builder.connectionsperhost (MongosettingsProperties.getConnectionsPerhost ()); builder.minconnectionsperhost (Mongosettingsproperties.getMinconnectionsperhost ()); if (MongosettingsProperties.getReplicAset ()! = null) {builder.requiredreplicationName (MongosettingsProperties.getReplicAset ()); } mongoclientoptions mongoclientoptions = builder.build (); // รายการที่อยู่ MongoDB <serveraddress> serveraddresses = arrayList ใหม่ <> (); สำหรับ (สตริงโฮสต์: MongosettingsProperties.getHosts ()) {Integer Index = MongosettingsProperties.getHosts (). indexof (โฮสต์); พอร์ตจำนวนเต็ม = MongosettingsProperties.getPorts (). รับ (ดัชนี); ServerAddress serveraddress = serveraddress ใหม่ (โฮสต์, พอร์ต); ServerAddresses.add (ServerAddress); } system.out.println ("serveraddresses:" + serveraddresses.toString ()); // รายการตรวจสอบสิทธิ์การเชื่อมต่อ <Mongocredential> MongocredentialList = new ArrayList <> (); ถ้า (MongosettingsProperties.getUserName ()! = null) {MongocredentialList.add (Mongocredential.createscramsha1credential (Mongosettingsproperties.getUsername (), Mongosettingsproperties.getauthenticationDataBase () : MongosettingsProperties.getDatabase (), MongosettingsProperties.getPassword (). tochararray ())); } System.out.println ("MongocredentialList:" + MongocredentialList.toString ()); // สร้างไคลเอนต์และโรงงาน mongoclient mongoclient = mongoclient ใหม่ (Serveraddresses, MongocredentialList, Mongoclientoptions); Mongodbfactory Mongodbfactory = ใหม่ simplemongodbfactory (mongoclient, mongosettingsproperties.getDatabase ()); กลับมา Mongodbfactory; -ที่นี่เมื่อมีการใช้งานการเชื่อมต่อ MongoDB พารามิเตอร์ที่กำหนดค่าไว้ในการกำหนดค่าก่อนหน้าจะถูกตั้งค่า ตามสถานการณ์จริงของคุณคุณสามารถเพิ่มและแก้ไขพารามิเตอร์การกำหนดค่าที่คุณต้องการเมื่อ SimpleMongodbfactory ใหม่
ณ จุดนี้การกำหนดค่าทั้งหมดเสร็จสมบูรณ์และการทดสอบได้ดำเนินการแล้ว
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น