Поскольку сегодняшняя разработка столкнулась с проблемами производительности, что может быть связано с MongoDB Connection, я поближе посмотрел и обнаружил, что кто -то написал этот связанный контент, поэтому я перепечатал его. Когда у вас есть время, вы можете написать расширение на Springforall, и идея тема все же. Спасибо этой прекрасной девушке, Джой Юань за ее статью!
иллюстрировать
Spring Boot использует Spring-Boot-Starter-Data-MongoDB для реализации автоматической конфигурации Spring-Data-MongoDB.
Однако по умолчанию Spring Boot не предоставляет функции конфигурации пула соединений, такие как использование MySQL или Redis. Поэтому нам нужно переписать MongoDBFactory сами, чтобы реализовать расширение конфигурации параметров подключения клиента MongoDB.
Следует отметить, что сам клиент MongoDB является пулом соединений, поэтому нам нужно только настроить клиента.
Файл конфигурации
Чтобы объединить конфигурацию Spring Boot, нам необходимо настроить переписываемую конфигурацию на Application.yml, с префиксом как spring.data.mongodb.custom (префикс может быть настроен по желанию):
Данные: Данные: MongoDB: Пользователь: хост:-10.0.5.1-10.0.5.1 Порты:-27017-27018-lete-lete: mgset-3590061 Имя пользователя: Jance Пароль: ABC123 База данных: jance Authentication-Database: Addan Connections-Per-Host: 20 Min-Connections-host: 20-й.
В этом примере конфигурации настроен набор реплик, включая хосты 10.0.5.1:27017 и 10.0.5.1:27018. Другие конфигурации аналогичны стандартной конфигурации Spring Boot. Кроме того, подключения на хост-это количество подключений к клиенту, а в соединениях-на хост минимальное количество подключений с клиентом.
Конфигурация обертки в класс
Для удобства вызова и читаемости вышеуказанная конфигурация оказана в классе объектов конфигурации. Код mongoconfig.java выглядит следующим образом:
пакет com.feidiao.jance.fdiot.api.config.mongo; import org.hibernate.validator.constraints.notblank; импорт org.hibernate.validator.cestrants.notempty; импорт org.springframework.stepontypencement. java.util.list;@component@validatedpublic class mongosettingsproperties {@notblank Private String Database; @Notempty private list <string> hosts; @Notempty Private List <Integer> порты; частная строка Replicaset; частное имя пользователя; Private String Password; частная строка AuthenticationDatabase; частное целое число MinConnectionsperhost = 10; Частные целочисленные соединения pershost = 2; public mongosettingsproperties () {} public String getDatabase () {return Database; } public void setDatabase (база данных String) {this.Database = Database; } public list <string> gethosts () {return hosts; } public void sethosts (list <string> hosts) {this.hosts = hosts; } public List <integer> getPorts () {return Ports; } public void setports (list <Integer> ports) {this.ports = ports; } 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 пароль; } public void setPassword (String password) {this.password = password; } public String getAuthenticationDataBase () {return authenticationDataBase; } public void setAuthenticationDataBase (String AuthenticationDataBase) {this.AuthenticationDataBase = AuthenticationDataBase; } public integer getMinconnectionsperhost () {return minconnectionsperhost; } public void setMinconceNectionsPerhost (Integer minConnectionsPerhost) {this.minconcementsperhost = minconnectionsperhost; } public integer getConnectionsperhost () {return Connectionsperhost; } public void setConnectionsPerhost (Integer ConnectionsPerhost) {this.connectionsperhost = connectionsperhost; }}Перезаписать mongodbfactory
Далее, перезапись оригинальный Boot Spring Boot Boot Bean и создайте новый файл mongoconfig.java, с кодом следующим образом:
Импорт com.mongodb.mongoclient; import com.mongodb.mongoclientoptions; import com.mongodb.mongocredential; import com.mongodb.serveraddress; import org.springframework.beans.factory.annotation.autowired; импорт org.spramework.boot.contextory.configeries.coutwired; org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import org.springframework.data.mongodb.mongodbfactory; importbfactory java.util.list; @configurationpublic class mongoconfig {// inject configuration entity @autowired private mongosettingsproperties mongosettingsproperties; @Bean @configurationproperties (prefix = "Spring.data.mongodb.custom") mongosettingsproperties mongosettingsproperties () {return new mongosettingsproperties (); } // перезаписывать по умолчанию mongodbfactory @bean mongodbfactory mongodbfactory () {// client configuration (количество соединений, проверка кластера реплик) mongoclientoptions.builder builder = new mongoclientoptions.builder (); builder.connectionsperhost (mongosettingsproperties.getConnectionsperhost ()); builder.minconnectionsperhost (mongosettingsproperties.getminconnectionsperhost ()); if (mongosettingsproperties.getReplicaset ()! = null) {builder.requiredReplicasetName (mongosettingsproperties.getReplicaset ()); } Mongoclientoptions mongoclientoptions = builder.build (); // Список списков адресов MongoDB <Serverdress> serveraddresses = new ArrayList <> (); for (String host: mongosettingsproperties.gethosts ()) {integer index = mongosettingsproperties.gethosts (). indexof (host); Integer Port = mongoSettingSproperties.getPorts (). Get (index); Serveraddress ServerDress = new ServerAddress (Host, Port); Serveraddresses.add (ServerAddress); } System.out.println ("ServerAddresses:" + serveraddresses.tostring ()); // Список аутентификации соединения <dongocredential> mongocredentiallist = new ArrayList <> (); if (mongosettingsproperties.getusername ()! = null) {mongocredentiallist.add (mongocredential.createscramsha1credential (mongosettingsproperties.getusername (), mongosettingsproperties.getauthenticationdatabase ()! = Null? mongosettingsproperties.getauthenticationdatabase (): mongosettingsproperties.getDatabase (), mongosettingsproperties.getPassword (). toCharraray ())); } System.out.println ("mongocredentiallist:" + mongocredentiallist.tostring ()); // Создание клиента и заводского моноцветного монгоклиента = новый монгоклиент (ServerDresses, MongocredentialList, Mongoclientoptions); Mongodbfactory mongodbfactory = new Simplemongodbfactory (mongoclient, mongosettingsproperties.getDatabase ()); вернуть mongodbfactory; }}Здесь, когда внедряется соединение MongoDB, установлены параметры, настроенные в предыдущей конфигурации. Согласно вашей реальной ситуации, вы можете добавить и изменить необходимые вам параметры конфигурации при новом SimpleMongodBFactory.
На этом этапе все конфигурации были завершены, и тесты были выполнены.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.