diff --git a/framework-docs/modules/ROOT/pages/core/beans/java/composing-configuration-classes.adoc b/framework-docs/modules/ROOT/pages/core/beans/java/composing-configuration-classes.adoc index 97b5604321..edc8af846c 100644 --- a/framework-docs/modules/ROOT/pages/core/beans/java/composing-configuration-classes.adoc +++ b/framework-docs/modules/ROOT/pages/core/beans/java/composing-configuration-classes.adoc @@ -522,23 +522,28 @@ allows for singling out specific beans for background initialization, covering t entire bean creation step for each such bean on context startup. Dependent beans with non-lazy injection points automatically wait for the bean instance -to be completed. All regular background initializations are forced to complete at the -end of context startup. Only for beans additionally marked as `@Lazy`, the completion -is allowed to happen later (up until first actual access). +to be completed. All regular background initializations are forced to complete at the end +of context startup. Only beans additionally marked as `@Lazy` are allowed to be completed +later (up until the first actual access). Background initialization typically goes together with `@Lazy` (or `ObjectProvider`) injection points in dependent beans. Otherwise, the main bootstrap thread is going to block when an actual background-initialized bean instance needs to be injected early. -This form of concurrent startup applies to individual beans: If such a bean depends on +This form of concurrent startup applies to individual beans: if such a bean depends on other beans, they need to have been initialized already, either simply through being -declared earlier or through `@DependsOn` which is enforcing initialization in the main +declared earlier or through `@DependsOn` which enforces initialization in the main bootstrap thread before background initialization for the affected bean is triggered. -Note that a `bootstrapExecutor` bean of type `Executor` needs to be declared for -background bootstrapping to be actually active. Otherwise, the background markers are -going to be ignored at runtime. The bootstrap executor may be a bounded executor just -for startup purposes or a shared thread pool which serves for other purposes as well. +[NOTE] +==== +A `bootstrapExecutor` bean of type `Executor` must be declared for background +bootstrapping to be actually active. Otherwise, the background markers will be ignored at +runtime. + +The bootstrap executor may be a bounded executor just for startup purposes or a shared +thread pool which serves for other purposes as well. +==== [[beans-java-conditional]]