Da die heutige Entwicklung auf Leistungsprobleme gestoßen ist, die möglicherweise mit der MongoDB -Verbindung zusammenhängen, sah ich einen genaueren Blick auf und stellte fest, dass jemand diesen verwandten Inhalt geschrieben hatte, also habe ich sie nachgedruckt. Wenn Sie Zeit haben, können Sie eine Erweiterung in Springforall schreiben, und die Betreffvorstellung ist immer noch dieselbe. Vielen Dank an dieses schöne Mädchen, Joy Yuan für ihren Artikel!
veranschaulichen
Spring Boot verwendet Spring-Boot-Starter-Daten-MongoDB, um die automatische Konfiguration von Springdaten-MongoDB zu implementieren.
Standardmäßig liefert Spring Start jedoch keine Konfigurationsfunktionen für Verbindungspools wie die Verwendung von MySQL oder Redis. Daher müssen wir MongoDBFactory selbst neu schreiben, um die Parameterkonfigurationserweiterung der MongoDB -Clientverbindung zu implementieren.
Es ist zu beachten, dass der MongoDB -Client selbst ein Verbindungspool ist, daher müssen wir den Client nur konfigurieren.
Konfigurationsdatei
Um die Konfiguration von Spring Start zu vereinheitlichen, müssen wir die umgeschriebene Konfiguration in application.yml konfigurieren, wobei das Präfix als Spring.data.mongodb.custom (das Präfix kann nach Belieben konfiguriert werden):
spring: data: mongodb: custom: hosts: - 10.0.5.1 - 10.0.5.1 ports: - 27017 - 27018 replica-set: mgset-3590061 username: jancee password: abc123 database: jancee authentication-database: admin connections-per-host: 20 min-connections-per-host: 20
In diesem Konfigurationsbeispiel ist ein Replikat -Set konfiguriert, einschließlich Hosts 10.0.5.1:27017 und 10.0.5.1:27018. Andere Konfigurationen ähneln der Standardkonfiguration von Spring Boot. Darüber hinaus ist die Anzahl der Verbindungen zum Client die Anzahl der Verbindungen, und in Konnektionen pro Host ist die Mindestanzahl von Verbindungen zum Client.
Wickeln Sie die Konfiguration in die Klasse ein
Aus Gründen der Angabe und der Lesbarkeit wird die obige Konfiguration in eine Konfigurationsentitätsklasse eingebunden. Der Code von Mongoconfig.java lautet wie folgt:
Paket com.feidiao.jancee.fdiot.api.config.mongo; import org.hibernate.validator. org.springframework.validation.annotation.Validated; import java.util.list;@component@validatedPublic Class MongosettingProperties {@notblank private String -Datenbank; @NotEmpty Private List <String> Hosts; @NotEmpty Private List <Ganzzahl> Ports; private String -Replika; privater String -Benutzername; privates Zeichenfolgenkennwort; private String -AuthentifizierungDatabase; Private Ganzzahl minconnectionSperhost = 10; private Ganzzahl ConnectionSperhost = 2; public mongosettingProperties () {} public String getDatabase () {return -Datenbank; } public void setDatabase (String -Datenbank) {this.database = Datenbank; } publiclist <string> Gethosts () {return hosts; } public void sethosts (list <string> hosts) {this.hosts = hosts; } publiclist <Ganzzahl> getPorts () {return ports; } public void setPorts (Liste <Integer> Ports) {this.ports = ports; } public String getReplicAset () {return replicaSet; } public void setReplicaset (String replicaset) {this.replicaset = replicaSet; } public String getUnername () {return userername; } public void setUnername (String -Benutzername) {this.username = userername; } public String getPassword () {Kennwort zurückgeben; } public void setPassword (String -Passwort) {this.password = password; } public String getAuthenticationDatabase () {return authenticationDatabase; } public void setAuthenticationDatabase (String -AuthentifizierungDatabase) {this.authenticationDatabase = authenticationDatabase; } public Integer getMinconnectionSperhost () {return minconnectionSperhost; } public void setMinconnectionSperhost (Ganzzahl minconnectionSperhost) {this.MinconnectionSperhost = minconnectionSperhost; } public Integer getConnectionSperhost () {return ConnectionSperHost; } public void setConnectionSperhost (Integer ConnectionSperhost) {this.connectionSperhost = ConnectionSperhost; }}Mongodbfaktorisch überschreiben
Als nächstes, Overwrite Spring Boots Original Mongodbfactory Bean und erstellen Sie eine neue Datei mongoconfig.java mit dem Code wie folgt:
importieren com.mongodb.mongoclient; import comongodb.mongoclientOptions; import comongodb.mongocredental; import comongodb.serveraddress; import org.springframework.beans.factory.Annotation.autowired; org.springframework.boot.context.properties.configurationProperties; import org.springframework.context.annotation.bean; org.springframework.data.mongodb.core.Implemongodbfactory; Import Java.util.ArrayList; import Java.util.List; @ConfigurationPublic Class Mongoconfig {// Inject -Konfigurationspflicht @autunired Private MongosettingSproperties MongosetingSpropties -Proptien -Propties -Propties -Propties -Propties -Propties -Propties -Propties -Propties -Propties -Propties -Propties -Propties MongosettingSproperties MongosetingSpropties -Propties -Propties -Proptien -Propties -Propties -Propties -Propties -Propties MongosettingSproperties MongosetingSpropties @Bean @ConfigurationProperties (Präfix = "Spring.data.Mongodb.Custom") MongosettingProperties MongosettingProperties () {return New MongosettingProperties (); } // Überschreiben Sie den Standard -Mongodbfactory @Bean mongodbfactory mongodbfactory () {// Client -Konfiguration (Anzahl der Verbindungen, Replikat -Cluster -Überprüfung) mongoclientOptions.builder Builder = New MongoclientOptions.builder (); Builder.ConnectionSPERHOST (MongosettingProperties.getConnectionSperhost ()); builder.MinconnectionSperhost (MongosettingProperties.getMinconnectionSPerHost ()); if (mongosettingProperties.getreplicaset ()! } MongoclientOptions mongoclientOptions = builder.build (); // MongoDB -Adressliste <Serveraddress> serveradDresse = new ArrayList <> (); für (String -Host: MongosettingProperties.Gethosts ()) {Integer Index = MongosettingProperties.Gethosts (). IndexOf (Host); Integer port = mongosettingProperties.getports (). Get (index); Serveraddress serveraddress = new serveraddress (host, port); serveradDresses.ADD (ServerAddress); } System.out.println ("serveradDresses:" + serveradDresse.toString ()); // Verbindungsauthentifizierungsliste <Mongocredential> MongocredentialList = New ArrayList <> (); if (mongosettingProperties.getUnername ()! mongosettingProperties.getAuthenticationDatabase (): MongosettingProperties.getDatabase (), MongosettingProperties.getPassword (). tocharArray ())); } System.out.println ("MongocredentialList:" + MongocredentialList.toString ()); // Client- und Factory Mongoclient Mongoclient = New Mongoclient (ServeradDresses, MongocredentialList, Mongoclientoptions); Mongodbfactory mongodbfactory = new Simplemongodbfactory (Mongoclient, MongosettingProperties.getDatabase ()); mongodbfactory zurückgeben; }}Wenn die MongoDB -Verbindung implementiert ist, werden die in der vorherigen Konfiguration konfigurierten Parameter festgelegt. Entsprechend Ihrer tatsächlichen Situation können Sie die Konfigurationsparameter hinzufügen und ändern, die Sie benötigen, wenn neue simimongodbfactory.
Zu diesem Zeitpunkt wurden alle Konfigurationen abgeschlossen und die Tests durchgeführt.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.