@ -4281,16 +4281,16 @@ any). These types must be 'wired up' explicitly via XML or using a Spring `@Bean
@@ -4281,16 +4281,16 @@ any). These types must be 'wired up' explicitly via XML or using a Spring `@Bean
[[beans-autowired-annotation-primary]]
=== Fine-tuning annotation-based autowiring with primary
Because autowiring by type may lead to multiple candidates, it is often necessary to
have more control over the selection process. One way to accomplish this is with
Spring's `@Primary` annotation. `@Primary` indicates that a bean should be given
preference when multiple candidates are qualified to autowire a single-valued dependency.
If exactly one 'primary' bean exists among the candidates, it will be the autowired
value.
=== Fine-tuning annotation-based autowiring with @Primary
Because autowiring by type may lead to multiple candidates, it is often necessary to have
more control over the selection process. One way to accomplish this is with Spring's
`@Primary` annotation. `@Primary` indicates that a particular bean should be given
preference when multiple beans are candidates to be autowired to a single-valued
dependency. If exactly one 'primary' bean exists among the candidates, it will be the
autowired value.
Let's assume the following configuration that define `firstMovieCatalog` as the _primary_
`MovieCatalog`
Let's assume we have the following configuration that defines `firstMovieCatalog` as the
_primary_ `MovieCatalog`.
[source,java,indent=0]
[subs="verbatim,quotes"]
@ -4310,7 +4310,8 @@ Let's assume the following configuration that define `firstMovieCatalog` as the
@@ -4310,7 +4310,8 @@ Let's assume the following configuration that define `firstMovieCatalog` as the
}
----
With such configuration, `MovieRecommender` will use `firstMovieCatalog`
With such configuration, the following `MovieRecommender` will be autowired with the
`firstMovieCatalog`.
[source,java,indent=0]
[subs="verbatim,quotes"]
@ -4444,14 +4445,14 @@ optional semantic qualifiers. This means that qualifier values, even with the be
@@ -4444,14 +4445,14 @@ optional semantic qualifiers. This means that qualifier values, even with the be
fallback, always have narrowing semantics within the set of type matches; they do not
semantically express a reference to a unique bean id. Good qualifier values are "main"
or "EMEA" or "persistent", expressing characteristics of a specific component that are
independent from the bean id, which may be auto-generated in case of an anonymous bean
independent from the bean `id`, which may be auto-generated in case of an anonymous bean
definition like the one in the preceding example.
Qualifiers also apply to typed collections, as discussed above, for example, to
`Set<MovieCatalog>`. In this case, all matching beans according to the declared
qualifiers are injected as a collection. This implies that qualifiers do not have to be
unique; they rather simply constitute filtering criteria. For example, you can define
multiple `MovieCatalog` beans with the same qualifier value "action"; all of which would
multiple `MovieCatalog` beans with the same qualifier value "action", all of which would
be injected into a `Set<MovieCatalog>` annotated with `@Qualifier("action")`.