Поставщик экземпляров Singleton MongoClient

Служба Java, которая подключается к MongoDB в производственной среде, но количество открытых подключений слишком велико. Это влияет на производительность MongoDb, поэтому я придумал решение, обеспечивающее MongoClient экземпляр singleton только один раз, чтобы уменьшить количество подключений.

Вот мой код, это хороший способ предоставить одноэлементный объект из сторонней библиотеки?

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;

public class MongoClientFactory {

    private static volatile MongoClient instance = null;

    private MongoClientFactory() {}

    public static MongoClient getInstance(String connectionString) {
        if (instance == null) {
            synchronized(MongoClientFactory.class) {
                if (instance == null) {
                    instance = MongoClients.create(connectionString);
                }
            }
        }
        return instance;
    }
}

1 ответ
1

Я не разбираюсь в синглтоне, но действительно ли connectionString меняется за время жизни приложения? Обычно (я могу ошибаться) эта строка объявляется с final ключевое слово.

  • из-за разной среды, такой как test, prod и local, для другой строки подключения

    — фуат

  • Да, но после запуска приложения вы, вероятно, не собираетесь менять URL-адрес? Для меня URL-адрес должен быть внутри файла porperties, который отличается для каждого env, поэтому вы можете изменить свой синглтон, чтобы он был построен внутри статического блока.

    — Квентин М

  • да, просто измените подпись функции

    — фуат

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *