Document @⁠Conditional gating of nested @⁠Configuration classes

Closes gh-36831

Signed-off-by: Dennis-Mircea Ciupitu <dennis.mircea.ciupitu@gmail.com>
This commit is contained in:
Dennis-Mircea Ciupitu
2026-05-23 23:36:32 +03:00
committed by Sam Brannen
parent 7651d5841f
commit f3bfe27445
2 changed files with 25 additions and 0 deletions
@@ -610,6 +610,19 @@ Kotlin::
See the {spring-framework-api}/context/annotation/Conditional.html[`@Conditional`]
javadoc for more detail.
[NOTE]
====
A `@Conditional` declared on an enclosing `@Configuration` class gates the
registration of nested `@Configuration` classes within it only when the
nested class is reached through the parser's recursion from its enclosing
class, or through `@Import`. When the nested class is discovered
independently of its enclosing class, for example via `@ComponentScan` or
by directly registering it against the application context, it is processed
using only its own `@Conditional` annotations. In that case, redeclare the
relevant conditions on the nested class, or extract them into a composed
annotation applied to both, if the same gating is intended.
====
[[beans-java-combining]]
== Combining Java and XML Configuration
@@ -341,6 +341,18 @@ import org.springframework.stereotype.Component;
* with the {@code @Profile} annotation to provide two options of the same bean to the
* enclosing {@code @Configuration} class.
*
* <p>{@link Conditional @Conditional} annotations declared on an enclosing
* {@code @Configuration} class gate registration of any nested
* {@code @Configuration} classes within it when the nested class is reached
* through the parser's recursion from its enclosing class (the case shown
* above) or via {@link Import @Import}. When the nested class is discovered
* independently of its enclosing class, for example via
* {@link ComponentScan @ComponentScan} or by directly registering the nested
* class against the application context, it is processed using only its own
* {@code @Conditional} annotations. In that case, redeclare the relevant
* conditions on the nested class, or extract them into a composed
* annotation applied to both, if the same gating is intended.
*
* <h2>Configuring lazy initialization</h2>
*
* <p>By default, {@code @Bean} methods will be <em>eagerly instantiated</em> at container