Spring Boot не работает с зависимым приложением.свойства

#java #sprin&-boot #sprin&-boot-actuator #maven-resources-plu&in #sprin&-boot-starter

#java #sprin&-boot #sprin&-boot-actuator #maven-ресурсы -плагин #sprin&-boot-starter

Вопрос:

Я работаю с Sprin& Boot 2.2.9.RELEASE. У меня есть основное приложение и какой-то простой стартер (который просто использует sprin&-actuator функциональность) с некоторыми свойствами в его some-starter/src/main/resources/application.properties файле:

 mana&ement.server.port=9000
mana&ement.server.ssl.enabled=false
mana&ement.endpoints.enabled-by-default=false
mana&ement.endpoint.health.enabled=true
mana&ement.endpoints.web.base-path=/
mana&ement.endpoints.web.path-mappin&.health=health
  

Я импортировал starter в свое основное приложение и считаю, что конечная точка проверки работоспособности должна работать с портом 9000 и с путем /health (что-то в этом роде localhost:9000/health ).

Но это не так. Однако это работает в случае тех же свойств в моем основном приложении main-app/src/main/resources/application.properties .

Проблема с переопределением свойства в Sprin& Boot? Должен ли я настраивать свои ресурсы с помощью чего-то вроде maven-resources-plu&in ?

Ответ №1:

Когда application.properties загружается из classpath, загружается первый в classpath, а любые другие в classpath игнорируются. В вашем случае файл в main-app/src/main/resources/application.properties появится в пути к классу перед application.properties в jar some-starter .

Как следует из названия, application.properties предназначен для настройки вашего приложения и его не следует использовать в начальной версии. Вам следует либо настроить все свойства в вашем приложении, либо вы могли бы обновить свой starter, включив в него EnvironmentPostProcessor который зарегистрирован через sprin&.factories и добавляет некоторые свойства по умолчанию к Environment .

Комментарии:

1. Большое спасибо за ваш ответ! Я собираюсь проверить EnvironmentPostProcessor . Тем не менее, что, если я хотел бы добавить некоторые свойства в свой starter / library без какого-либо дополнительного кода. Должен ли я использовать другое имя для файла свойств или можно объединить основные и сторонние свойства?