@Araya

Как настроить бины в подпроектах без application.properties?

Есть некая библиотека как зависимость проектов, в ней создаются бины по работе с базами данных (и не только). Для них требуются настройки, которые задаются в application.properties. В этом проекте, разумеется, это все есть.

При подключении этой либы к другим проектам, эти бины не берут настройки из своего файла application.properties, а ждет портянку в текущем проекте. Пуляет ошибками:
Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Unsatisfied dependency expressed through method 'dataSourceScriptDatabaseInitializer' parameter 0;

Unexpected exception during bean creation; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'db.datasource.url' in value "${db.datasource.url}"


Приходятся копипастить портянки во всех проектах, что естественно, вообще неудобно. Как заставить бины смотреть в "свой" файл application.properties и избавиться от копипаста?
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Spring
Java Software Engineer
Araya, как отметил коллега Ерлан Ибраев и я, стоит поднять отдельный config server (Spring Cloud Config).
В таком случае при первом старте приложения сперва стартанет config server. Затем все остальные сервисы (eureka server, gateway и др.). Все сервисы получат конфиги из config server. Притом можно все конфиги напрямую получать из github репозитория. Для каждого из микросервисов можно создать свой properties || yml. Или же можно задать общий на всех. Можно также задать отдельные конфиги согласно активному профилю. Также при необходимости можно динамически изменять конфиги (например, при помощи Spring Cloud Bus).

Вот, скрин, который поможет разобраться в вопросе:
6116aa4e864f8269423104.png
Вы можете все конфиги из всех микросервисов вынести в отдельный гит репозиторий (или же можно хранить локально. (профиль - native)). Внутри микросервисов достаточно файла bootstrap.yml или bootstrap.properties. Соответственно, все файлы конфигов вы называете именем вашего микросервиса (обратите внимание на скриншот выше).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы