Рецепт от Spring Boot
Некоторое время назад мне довелось писать агрегатор информации, разбросанной по нескольким базам данных с разными схемами. Для реализации был выбран Spring Boot. Ну, потому что модный и судя по примерам существенно упрощает жизнь за счет умной автоконфигурации. В этой статье я опишу, что же необходимо сконфигурировать и как, в случае, если вы отошли от стандартного сценария.
Первым делом, необходимо прописать настройки доступа к каждой из баз. Например, вот так:
Следующим шагом создадим отдельный класс конфигурации (для удобства), в котором определим dataSources:
Обратите внимание, как просто получить настройки с помощью @ConfigurationProperties. Правда, пришлось ввести вспомогательный класс BaseDataSourceProperties — наследник DataSourceProperties, в котором область видимости метода getDriverClassName расширена до public.
И осталось совсем немного — сконфигурировать JPA-репозитории. Насчет немного я, конечно, пошутил :) В этой части предстоит больше всего работы. Снова-таки, для удобства, создадим отдельный конфигурационный класс:
Все, что осталось сделать — это отключить автоконфигурацию dataSources.
@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
Кстати, удобство выделения отдельных конфигурационных файлов можно оценить при написании интеграционных тестов. Ваши тесты будут выглядеть примерно так:
Вот и весь рецепт. Пользуйтесь на здоровье!
UPD.: Со времени написания этого поста прошло немало времени и существенно подход не изменился. Зато появилось описание конфигурации нескольких баз данных для одного приложения в документации Spring Boot, где вы всегда сможете узнать, как это сделать, используя последние нововведения.
Комментарии