#spring #mongodb #spring-boot #spring-data #spring-data-mongodb
#spring #mongodb #spring-boot #spring-данные #spring-data-mongodb
Вопрос:
В моей текущей реализации архитектура MongoDB выглядит следующим образом
DB : schoola
Collections :
1. students
2. users
DB : schoolb
Collections :
1. students
2. users
И в каждом экземпляре файла свойств Spring Server я делаю —
SPRING_DATA_MONGODB_DATABASE: <dbname>
SPRING_DATA_MONGODB_URI: <URI to <dbname>>
Очевидно, что это не масштабируемо, и я уже устал поддерживать разные экземпляры сервера.
Вместо того, что я ищу, у меня будет пользовательская база данных
DB : user
Collections :
1. users (with fields {userName, password, associatedWith: <DB NAME OF THE SCHOOL USER IS ASSOCIATED WITH>)
Итак, как мне сделать следующее?
Когда пользователь пытается войти в систему, я пытаюсь выполнить проверку с помощью пользователя / users и в случае успеха извлекаю значение, связанное с.
Затем я подключаюсь к этой базе данных и предоставляю услуги этому пользователю, опять же, я не подключаюсь к mongodb при каждом вызове Rest, вероятно, мне нужно поддерживать UserContext в памяти.
Комментарии:
1. Вы бы сделали это с JDBC, имея 2 разных источника данных и используя правильный экземпляр каждый раз. Но почему? Почему бы просто не использовать одну?
2. вы должны настроить два источника данных и выбрать правильный в зависимости от ваших потребностей. Эта статья может помочь вам
Ответ №1:
Одним из способов сделать это было бы предоставить свой собственный вариант MongoDatabaseFactory
, который на getMongoDatabase()
считывает клиента из источника контекста и возвращает MongoDatabase
для использования.
Этот пример немного устарел, но дает представление об общем направлении здесь.