Federico Mariani created CAMEL-24000:
----------------------------------------

             Summary: camel-spring-boot - Align core auto-configuration with 
Spring Boot 4 idioms
                 Key: CAMEL-24000
                 URL: https://issues.apache.org/jira/browse/CAMEL-24000
             Project: Camel
          Issue Type: Improvement
          Components: camel-spring-boot
            Reporter: Federico Mariani
            Assignee: Federico Mariani
             Fix For: 4.22.0


Modernization of {{core/camel-spring-boot}} following a review against Spring 
Boot 4.1.x best practices:

* *MainListener notified exactly once with run controller enabled*: with 
{{camel.main.run-controller=true}}, {{MainListener}} beans received 
{{beforeStart}}/{{afterStart}} (and stop callbacks) twice, once from the 
controller created by {{CamelAutoConfiguration}} (CAMEL-21359) and once from 
the run controller's internal {{Main}}. The run controller no longer registers 
the listener beans; a test asserts exactly-once delivery for all seven 
callbacks.
* *Remove dead code*: unused {{HierarchicalCondition}} and 
{{CompositeConversionService}}, unbindable 
{{ClusteredRouteControllerConfiguration.clusterServiceRef}}, unused import in 
{{CamelDevConsoleAutoConfiguration}}.
* *Do not mutate shared @ConfigurationProperties beans*: the trace, error 
registry and security policy auto-configurations applied dev/prod profile 
defaults by mutating the injected properties singleton; effective values are 
now computed locally.
* *Use @ConditionalOnBooleanProperty* (Spring Boot 3.4+) for the supervising 
and clustered route controller auto-configurations, dropping the redundant 
in-method enabled re-check and null @Bean return.
* *Consolidate the eight vault auto-configurations*: replace hand-written 
per-field copy chains with {{BeanUtils.copyProperties}} and add a reflection 
test guarding against drift with the Camel core vault configurations. The test 
immediately found missing options: {{camel.vault.ibm.refresh-enabled}} and 
{{camel.vault.ibm.secrets}} were not configurable from Spring Boot; both added.
* *Bind duration properties as java.time.Duration* with 
{{@DurationUnit(MILLIS)}} for the supervising route controller delays and 
startup condition interval/timeout. Plain numeric values keep meaning 
milliseconds; values such as {{5s}} are now supported. Note: the getters of the 
affected properties classes change type from {{long}}/{{int}} to {{Duration}}.

_Claude Code on behalf of Federico Mariani._



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

Reply via email to