Merge branch '6.1.x'

This commit is contained in:
Juergen Hoeller 2024-10-08 11:34:27 +02:00
commit 1eee795143
3 changed files with 20 additions and 17 deletions

View File

@ -920,7 +920,8 @@ Kotlin::
[[beans-scanning-qualifiers]] [[beans-scanning-qualifiers]]
== Providing Qualifier Metadata with Annotations == Providing Qualifier Metadata with Annotations
The `@Qualifier` annotation is discussed in xref:core/beans/annotation-config/autowired-qualifiers.adoc[Fine-tuning Annotation-based Autowiring with Qualifiers]. The `@Qualifier` annotation is discussed in
xref:core/beans/annotation-config/autowired-qualifiers.adoc[Fine-tuning Annotation-based Autowiring with Qualifiers].
The examples in that section demonstrate the use of the `@Qualifier` annotation and The examples in that section demonstrate the use of the `@Qualifier` annotation and
custom qualifier annotations to provide fine-grained control when you resolve autowire custom qualifier annotations to provide fine-grained control when you resolve autowire
candidates. Because those examples were based on XML bean definitions, the qualifier candidates. Because those examples were based on XML bean definitions, the qualifier

View File

@ -60,6 +60,7 @@ instance's values consist of all bean instances that match the expected type, an
`Map` instance's keys contain the corresponding bean names. `Map` instance's keys contain the corresponding bean names.
[[beans-autowired-exceptions]] [[beans-autowired-exceptions]]
== Limitations and Disadvantages of Autowiring == Limitations and Disadvantages of Autowiring
@ -101,10 +102,10 @@ In the latter scenario, you have several options:
== Excluding a Bean from Autowiring == Excluding a Bean from Autowiring
On a per-bean basis, you can exclude a bean from autowiring. In Spring's XML format, set On a per-bean basis, you can exclude a bean from autowiring. In Spring's XML format, set
the `autowire-candidate` attribute of the `<bean/>` element to `false`. The container the `autowire-candidate` attribute of the `<bean/>` element to `false`; with the `@Bean`
makes that specific bean definition unavailable to the autowiring infrastructure annotation, the attribute is named `autowireCandidate`. The container makes that specific
(including annotation style configurations such as xref:core/beans/annotation-config/autowired.adoc[`@Autowired`] bean definition unavailable to the autowiring infrastructure, including annotation-based
). injection points such as xref:core/beans/annotation-config/autowired.adoc[`@Autowired`].
NOTE: The `autowire-candidate` attribute is designed to only affect type-based autowiring. NOTE: The `autowire-candidate` attribute is designed to only affect type-based autowiring.
It does not affect explicit references by name, which get resolved even if the It does not affect explicit references by name, which get resolved even if the
@ -119,8 +120,8 @@ provide multiple patterns, define them in a comma-separated list. An explicit va
`true` or `false` for a bean definition's `autowire-candidate` attribute always takes `true` or `false` for a bean definition's `autowire-candidate` attribute always takes
precedence. For such beans, the pattern matching rules do not apply. precedence. For such beans, the pattern matching rules do not apply.
These techniques are useful for beans that you never want to be injected into other These techniques are useful for beans that you never want to be injected into other beans
beans by autowiring. It does not mean that an excluded bean cannot itself be configured by by autowiring. It does not mean that an excluded bean cannot itself be configured by
using autowiring. Rather, the bean itself is not a candidate for autowiring other beans. using autowiring. Rather, the bean itself is not a candidate for autowiring other beans.

View File

@ -4,12 +4,13 @@
If a bean is a dependency of another bean, that usually means that one bean is set as a If a bean is a dependency of another bean, that usually means that one bean is set as a
property of another. Typically you accomplish this with the property of another. Typically you accomplish this with the
xref:core/beans/dependencies/factory-properties-detailed.adoc#beans-ref-element[`<ref/>` element>] xref:core/beans/dependencies/factory-properties-detailed.adoc#beans-ref-element[`<ref/>` element>]
in XML-based configuration metadata. However, sometimes dependencies between beans are in XML-based metadata or through xref:core/beans/dependencies/factory-autowire.adoc[autowiring].
less direct. An example is when a static initializer in a class needs to be triggered,
such as for database driver registration. The `depends-on` attribute can explicitly force However, sometimes dependencies between beans are less direct. An example is when a static
one or more beans to be initialized before the bean using this element is initialized. initializer in a class needs to be triggered, such as for database driver registration.
The following example uses the `depends-on` attribute to express a dependency on a single The `depends-on` attribute or `@DependsOn` annotation can explicitly force one or more beans
bean: to be initialized before the bean using this element is initialized. The following example
uses the `depends-on` attribute to express a dependency on a single bean:
[source,xml,indent=0,subs="verbatim,quotes"] [source,xml,indent=0,subs="verbatim,quotes"]
---- ----
@ -32,10 +33,10 @@ delimiters):
---- ----
NOTE: The `depends-on` attribute can specify both an initialization-time dependency and, NOTE: The `depends-on` attribute can specify both an initialization-time dependency and,
in the case of xref:core/beans/factory-scopes.adoc#beans-factory-scopes-singleton[singleton] beans only, a corresponding in the case of xref:core/beans/factory-scopes.adoc#beans-factory-scopes-singleton[singleton]
destruction-time dependency. Dependent beans that define a `depends-on` relationship beans only, a corresponding destruction-time dependency. Dependent beans that define a
with a given bean are destroyed first, prior to the given bean itself being destroyed. `depends-on` relationship with a given bean are destroyed first, prior to the given bean
Thus, `depends-on` can also control shutdown order. itself being destroyed. Thus, `depends-on` can also control shutdown order.