Reputation: 261
I'm working with the Spring Boot 2.2.9.RELEASE. I have the main app and some plain starter (which just uses spring-actuator
functionality) with some properties in its some-starter/src/main/resources/application.properties
file:
management.server.port=9000
management.server.ssl.enabled=false
management.endpoints.enabled-by-default=false
management.endpoint.health.enabled=true
management.endpoints.web.base-path=/
management.endpoints.web.path-mapping.health=health
I've imported the starter into my main app and I believe that the healthcheck endpoint should work with the port 9000
and with the path /health
(smth like that localhost:9000/health
).
But it doesn't. However, it works in case of the same properties in my main app main-app/src/main/resources/application.properties
.
Is it problem with the property overriding in Spring Boot? Should i configure my resources via something like maven-resources-plugin
?
Upvotes: 1
Views: 577
Reputation: 116091
When application.properties
is loaded from the classpath, the first one on the classpath is loaded and any others on the classpath are ignored. In your case, the file in main-app/src/main/resources/application.properties
will appear on the classpath before the application.properties
in the jar of some-starter
.
As its name suggests, application.properties
is intended for configuring your application and it shouldn't be used in a starter. You should either configure all of the properties in your application, or you could update your starter to include an EnvironmentPostProcessor
that is registered via spring.factories
and adds some default properties to the Environment
.
Upvotes: 2