Как @Jonathan Johx упомянул свое мультитенантное приложение, каждый арендатор имеет свою схему.Чтобы предоставить некоторые конкретные указания, вы можете создать специальный источник данных, который будет действовать как прокси для реальных источников данных, каждый из которых может отвечать за подключение к одной схеме.
Spring уже предоставляет AbstractRoutingDatSource для этой цели или вы можете свернуть своеПо сути, вы должны определить какой-то метод отображения ( defineCurrentLookupKey ) и поддерживать карту ключа к фактическому источнику данных, который можно обновлять в режиме реального времени в случае подключения нового источника данных.
IВы нашли Этот пост SO , который более подробно объясняет этот подход, поэтому нет причин дублировать эту информацию.
Некоторые моменты, которые следует учитывать на основе вашего вопроса:
- Иногда новые источники данных должны регистрироваться во время выполнения
- Возможно, стоит закрыть соединения и освободить ресурсы как на стороне вашего приложения, так и на стороне СУБД, закрыв источник данных после некоторого ttl, если никто не используетit.
- Поскольку вы упомянули весеннюю загрузку, он может иметь проверку работоспособности привода, которая проверяет подключение базы данных, поэтому убедитесь, что он по-прежнему отвечает требованиям.Я упоминаю об этом, потому что, если он ответит кодом не-200, а вы работаете в какой-то сложной среде, которая выполняет проверки работоспособности, такие как (например, kubernetes, ecs и т. Д.), Микросервис не может считаться исправным из-за этого,так что ваши девопы могут злиться:)