Federico Mariani created CAMEL-24025:
----------------------------------------

             Summary: camel-observability-services-starter: ship defaults via 
EnvironmentPostProcessor instead of config/application.properties so users can 
override them
                 Key: CAMEL-24025
                 URL: https://issues.apache.org/jira/browse/CAMEL-24025
             Project: Camel
          Issue Type: Improvement
          Components: camel-spring-boot-starters
            Reporter: Federico Mariani


{{camel-observability-services-starter}} packages its opinionated defaults as a 
literal {{config/application.properties}} inside the starter jar:

https://github.com/apache/camel-spring-boot/blob/main/components-starter/camel-observability-services-starter/src/main/resources/config/application.properties

Spring Boot's config-data search order is {{classpath:/}} first, then 
{{classpath:/config/}}, with later locations winning. So the starter's file 
silently overrides the same keys in the application's own 
{{application.properties}} — users can only beat it with higher-precedence 
sources (env vars, system properties, external config files). This is the root 
cause of the documented limitation "the customization of the configuration for 
this component is not available for Spring Boot runtime". It also means the 
starter force-overrides {{management.server.port=9876}} even when the user sets 
it, unlike the Camel Main and Quarkus variants where defaults are 
user-overridable. Spring Boot's reference docs on custom starters explicitly 
advise against packaging an {{application.properties}}/{{yml}} in a library for 
exactly these reasons (plus classpath-order nondeterminism if two jars ship the 
same resource path).

*Proposal:* replace the packaged {{config/application.properties}} with an 
{{EnvironmentPostProcessor}} (registered in {{META-INF/spring.factories}}) that 
adds the same keys as a {{MapPropertySource}} via 
{{environment.getPropertySources().addLast(...)}}. Being last, the defaults 
keep working out of the box but every key becomes overridable through normal 
Spring Boot precedence (application properties, profiles, env vars). The 
documented customization limitation can then be removed, aligning the Spring 
Boot behavior with Camel Main and Quarkus.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to