Como o desenvolvimento de hoje encontrou problemas de desempenho, que podem estar relacionados à conexão MongoDB, dei uma olhada mais de perto e descobri que alguém havia escrito esse conteúdo relacionado, então eu o reimpressei. Quando você tem tempo, pode escrever uma extensão para o SpringForall e a ideia do assunto ainda é a mesma. Obrigado a esta linda garota, Joy Yuan por seu artigo!
ilustrar
A bota de primavera usa o Spring-Boot-Starter-Data-MongoDB para implementar a configuração automática do Spring-Data-MongoDB.
No entanto, por padrão, a Spring Boot não fornece funções de configuração do pool de conexões, como o uso do MySQL ou Redis. Portanto, precisamos reescrever o MongoDBFactory para implementar a extensão da configuração de parâmetros da conexão do cliente MongoDB.
Deve -se notar que o próprio cliente do MongoDB é um pool de conexão, portanto, precisamos apenas configurar o cliente.
Arquivo de configuração
Para unificar a configuração da bota da mola, precisamos configurar a configuração reescrita no application.yml, com o prefixo como spring.data.mongodb.custom (o prefixo pode ser configurado à vontade):
Primavera: Dados: MongoDB: Custom: Hosts:-10.0.5.1-10.0.5.1 Portas:-27017-27018 Réplica-set: MGSET-3590061 Nome de usuário: Jancee Senha: ABC123 Database: Jancee Authentication-DataS-DATASTASTAS: Connections-Per-Host: 20-Conextions- Minentions- Minentings- Minenções Minenções Minenções Minenções e Minenções Minenções 20
Neste exemplo de configuração, um conjunto de réplicas é configurado, incluindo os hosts 10.0.5.1:27017 e 10.0.5.1:27018. Outras configurações são semelhantes à configuração padrão da Spring Boot. Além disso, as conexões por host são o número de conexões com o cliente, e as conexões por host são o número mínimo de conexões com o cliente.
Engane a configuração na aula
Por conveniência de chamada e legibilidade, a configuração acima é envolvida em uma classe de entidade de configuração. O código MongoConfig.java é o seguinte:
pacote com.feidiao.jancee.fdiot.api.config.mongo; importar org.hibernate.validator.constraints.notblank; importar org.hibernate.validator.constraints.notempty; importação org.springFramework.teroTypen.Tonson; java.util.list;@componente@validatedpublic class MongoSettingSProperties {@NotBlank Private String Database; @NotEmpty Private List <String> hosts; @NotEmpty Private List <Integer> portas; Private String ReplicaSet; Nome de usuário privado de string; senha de sequência privada; String privada autenticaçãoDatabase; private Integer MinconnsperHost = 10; ConnectionsPerhost do número inteiro privado = 2; public MongosettingSProperties () {} public String getDatabase () {retornar banco de dados; } public void setDatabase (banco de dados da String) {this.database = banco de dados; } list public <string> gethosts () {return hosts; } public void sethosts (list <string> hosts) {this.hosts = hosts; } Lista pública <Teger> getports () {return Ports; } public void Setports (list <Teger> portas) {this.ports = portas; } 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 = nome de usuário; } public string getPassword () {return senha; } public void setPassword (string senha) {this.password = senha; } public string getAuthenticationDatabase () {return autenticationDatabase; } public void setauthenticationDatabase (string autenticationDatabase) {this.authenticationDatabase = autenticaçãoDatabase; } public integer getMinconnectionsPerHost () {return minconnectionsperhost; } public void setMinconnectionsPerhost (Integer MinconnectionsPerHost) {this.minconnectionsperhost = miConnectionsperhost; } public integer getConnectionsperHost () {return ConnectionsPerhost; } public void setConnectionsPerHost (conexões inteiras) {this.connectionsperhost = conextionsperhost; }}Substitua MongoDBFactory
Em seguida, substitua o feijão MongoDBFactory original da Spring Boot e crie um novo arquivo mongoconfig.java, com o código da seguinte forma:
import com.mongodb.mongoclient; importar com.mongodb.mongoClientOptions; importar com.mongodb.mongocrerencial; importar com.mongodb.serveraddress; importação org.springframework.beans.actory.annotation.autowired; org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; importar org.springframework.data.mongodb.mongodbFactory; importar org.springFramework.data.mongodb.core.cora; java.util.ArrayList; importar java.util.list; @configurationpublic classe mongoconfig {// injetar entidade de configuração @autowired MongoSettingSProperties MonGosettingSproperties; @Bean @ConfigurationProperties (prefix = "spring.data.mongodb.custom") MongoSettingSProperties MongosettingSProperties () {return New MongosettingsProperties (); } // substitua o padrão MongoDBFactory @Bean MongoDBFactory MongoDBFactory () {// Configuração do cliente (número de conexões, verificação de cluster de réplica) MongoClientOptions.Builder Builder = New Mongoclientary.builder (); builder.connectionsperhost (mongosettingsproperties.getConnectionsperhost ()); builder.minconnectionSperhost (MonGosettingsProperties.getMinconnectionsPerHost ()); if (mongosettingsProperties.getReplicaset ()! = null) {builder.RequiredReplicasetName (mongosettingsproperties.getReplicaset ()); } MongoclientOptions MongoClientOptions = Builder.Build (); // Lista de endereços de MongoDB <ServerAddress> serverAddresses = new ArrayList <> (); for (host de string: mongosettingsproperties.gethosts ()) {Inteiro index = mongosettingsproperties.gethosts (). indexOf (host); Porta inteira = mongosettingsproperties.getports (). Get (index); ServerAddress ServerAddress = new ServerAddress (host, porta); serverAddresses.add (ServerAddress); } System.out.println ("ServerAddresses:" + serverAddresses.toString ()); // Lista de autenticação de conexão <Mongocredential> mongocredentialList = new ArrayList <> (); if (MongosettingsProperties.getUserName ()! = null) {mongocredentialList.add (mongocredential.createscramsha1credential (mongosettingsproperties.getUsername (), mongosetstingsproperties.GegaTeuthenticationDatabase (), names! mongosettingsProperties.GETATHenticationDatabase (): MonGosettingSProperties.getDatabase (), MonGosettingsProperties.getPassword (). TOCharArray ())); } System.out.println ("mongocredentialList:" + mongocredentialList.toString ()); // cria mongoclient client e fábrica mongoclient = novo mongoclient (serverAddresses, mongocredentiallist, mongoclientOptions); Mongodbfactory mongodbFactory = new SimpleMongodBFactory (mongoclient, mongosettingsproperties.getDatabase ()); retornar mongodbfactory; }}Aqui, quando a conexão MONGODB é implementada, os parâmetros configurados na configuração anterior são definidos. De acordo com a sua situação real, você pode adicionar e modificar os parâmetros de configuração necessários quando novo simplimanGodBFactory.
Nesse ponto, todas as configurações foram concluídas e os testes foram executados.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.