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)