Ensure code listing callouts are displayed incorrectly in core-beans.adoc

Closes gh-29457
This commit is contained in:
Sam Brannen 2022-11-20 19:17:34 +01:00
parent 9378493d83
commit 32a5830543
1 changed files with 40 additions and 0 deletions

View File

@ -5200,6 +5200,7 @@ with specific arguments, narrowing the set of type matches so that a specific be
chosen for each argument. In the simplest case, this can be a plain descriptive value, as chosen for each argument. In the simplest case, this can be a plain descriptive value, as
shown in the following example: shown in the following example:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5224,10 +5225,12 @@ shown in the following example:
// ... // ...
} }
---- ----
--
You can also specify the `@Qualifier` annotation on individual constructor arguments or You can also specify the `@Qualifier` annotation on individual constructor arguments or
method parameters, as shown in the following example: method parameters, as shown in the following example:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5266,9 +5269,11 @@ method parameters, as shown in the following example:
// ... // ...
} }
---- ----
--
The following example shows corresponding bean definitions. The following example shows corresponding bean definitions.
--
[source,xml,indent=0,subs="verbatim,quotes"] [source,xml,indent=0,subs="verbatim,quotes"]
---- ----
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -5302,6 +5307,7 @@ The following example shows corresponding bean definitions.
is qualified with the same value. is qualified with the same value.
<2> The bean with the `action` qualifier value is wired with the constructor argument that <2> The bean with the `action` qualifier value is wired with the constructor argument that
is qualified with the same value. is qualified with the same value.
--
For a fallback match, the bean name is considered a default qualifier value. Thus, you For a fallback match, the bean name is considered a default qualifier value. Thus, you
can define the bean with an `id` of `main` instead of the nested qualifier element, leading can define the bean with an `id` of `main` instead of the nested qualifier element, leading
@ -5379,6 +5385,7 @@ constructor or a multi-argument method.
You can create your own custom qualifier annotations. To do so, define an annotation and You can create your own custom qualifier annotations. To do so, define an annotation and
provide the `@Qualifier` annotation within your definition, as the following example shows: provide the `@Qualifier` annotation within your definition, as the following example shows:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5398,10 +5405,12 @@ provide the `@Qualifier` annotation within your definition, as the following exa
@Qualifier @Qualifier
annotation class Genre(val value: String) annotation class Genre(val value: String)
---- ----
--
Then you can provide the custom qualifier on autowired fields and parameters, as the Then you can provide the custom qualifier on autowired fields and parameters, as the
following example shows: following example shows:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5440,6 +5449,7 @@ following example shows:
// ... // ...
} }
---- ----
--
Next, you can provide the information for the candidate bean definitions. You can add Next, you can provide the information for the candidate bean definitions. You can add
`<qualifier/>` tags as sub-elements of the `<bean/>` tag and then specify the `type` and `<qualifier/>` tags as sub-elements of the `<bean/>` tag and then specify the `type` and
@ -5448,6 +5458,7 @@ fully-qualified class name of the annotation. Alternately, as a convenience if n
conflicting names exists, you can use the short class name. The following example conflicting names exists, you can use the short class name. The following example
demonstrates both approaches: demonstrates both approaches:
--
[source,xml,indent=0,subs="verbatim,quotes"] [source,xml,indent=0,subs="verbatim,quotes"]
---- ----
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -5475,6 +5486,7 @@ demonstrates both approaches:
</beans> </beans>
---- ----
--
In <<beans-classpath-scanning>>, you can see an annotation-based alternative to In <<beans-classpath-scanning>>, you can see an annotation-based alternative to
providing the qualifier metadata in XML. Specifically, see <<beans-scanning-qualifiers>>. providing the qualifier metadata in XML. Specifically, see <<beans-scanning-qualifiers>>.
@ -5485,6 +5497,7 @@ several different types of dependencies. For example, you may provide an offline
catalog that can be searched when no Internet connection is available. First, define catalog that can be searched when no Internet connection is available. First, define
the simple annotation, as the following example shows: the simple annotation, as the following example shows:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5502,10 +5515,12 @@ the simple annotation, as the following example shows:
@Qualifier @Qualifier
annotation class Offline annotation class Offline
---- ----
--
Then add the annotation to the field or property to be autowired, as shown in the Then add the annotation to the field or property to be autowired, as shown in the
following example: following example:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5533,9 +5548,11 @@ class MovieRecommender {
} }
---- ----
<1> This line adds the `@Offline` annotation. <1> This line adds the `@Offline` annotation.
--
Now the bean definition only needs a qualifier `type`, as shown in the following example: Now the bean definition only needs a qualifier `type`, as shown in the following example:
--
[source,xml,indent=0,subs="verbatim,quotes"] [source,xml,indent=0,subs="verbatim,quotes"]
---- ----
<bean class="example.SimpleMovieCatalog"> <bean class="example.SimpleMovieCatalog">
@ -5544,6 +5561,7 @@ Now the bean definition only needs a qualifier `type`, as shown in the following
</bean> </bean>
---- ----
<1> This element specifies the qualifier. <1> This element specifies the qualifier.
--
You can also define custom qualifier annotations that accept named attributes in You can also define custom qualifier annotations that accept named attributes in
@ -5552,6 +5570,7 @@ then specified on a field or parameter to be autowired, a bean definition must m
all such attribute values to be considered an autowire candidate. As an example, all such attribute values to be considered an autowire candidate. As an example,
consider the following annotation definition: consider the following annotation definition:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5573,9 +5592,11 @@ consider the following annotation definition:
@Qualifier @Qualifier
annotation class MovieQualifier(val genre: String, val format: Format) annotation class MovieQualifier(val genre: String, val format: Format)
---- ----
--
In this case `Format` is an enum, defined as follows: In this case `Format` is an enum, defined as follows:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5590,10 +5611,12 @@ In this case `Format` is an enum, defined as follows:
VHS, DVD, BLURAY VHS, DVD, BLURAY
} }
---- ----
--
The fields to be autowired are annotated with the custom qualifier and include values The fields to be autowired are annotated with the custom qualifier and include values
for both attributes: `genre` and `format`, as the following example shows: for both attributes: `genre` and `format`, as the following example shows:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5642,6 +5665,7 @@ for both attributes: `genre` and `format`, as the following example shows:
// ... // ...
} }
---- ----
--
Finally, the bean definitions should contain matching qualifier values. This example Finally, the bean definitions should contain matching qualifier values. This example
also demonstrates that you can use bean meta attributes instead of the also demonstrates that you can use bean meta attributes instead of the
@ -5650,6 +5674,7 @@ precedence, but the autowiring mechanism falls back on the values provided withi
`<meta/>` tags if no such qualifier is present, as in the last two bean definitions in `<meta/>` tags if no such qualifier is present, as in the last two bean definitions in
the following example: the following example:
--
[source,xml,indent=0,subs="verbatim,quotes"] [source,xml,indent=0,subs="verbatim,quotes"]
---- ----
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -5693,6 +5718,7 @@ the following example:
</beans> </beans>
---- ----
--
@ -5824,6 +5850,7 @@ endpoints. Spring supports this pattern for Spring-managed objects as well.
the bean name to be injected. In other words, it follows by-name semantics, the bean name to be injected. In other words, it follows by-name semantics,
as demonstrated in the following example: as demonstrated in the following example:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5849,6 +5876,7 @@ class SimpleMovieLister {
} }
---- ----
<1> This line injects a `@Resource`. <1> This line injects a `@Resource`.
--
If no name is explicitly specified, the default name is derived from the field name or If no name is explicitly specified, the default name is derived from the field name or
@ -5856,6 +5884,7 @@ setter method. In case of a field, it takes the field name. In case of a setter
it takes the bean property name. The following example is going to have the bean it takes the bean property name. The following example is going to have the bean
named `movieFinder` injected into its setter method: named `movieFinder` injected into its setter method:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5879,6 +5908,7 @@ named `movieFinder` injected into its setter method:
} }
---- ----
--
NOTE: The name provided with the annotation is resolved as a bean name by the NOTE: The name provided with the annotation is resolved as a bean name by the
`ApplicationContext` of which the `CommonAnnotationBeanPostProcessor` is aware. `ApplicationContext` of which the `CommonAnnotationBeanPostProcessor` is aware.
@ -5897,6 +5927,7 @@ Thus, in the following example, the `customerPreferenceDao` field first looks fo
named "customerPreferenceDao" and then falls back to a primary type match for the type named "customerPreferenceDao" and then falls back to a primary type match for the type
`CustomerPreferenceDao`: `CustomerPreferenceDao`:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -5934,6 +5965,7 @@ named "customerPreferenceDao" and then falls back to a primary type match for th
---- ----
<1> The `context` field is injected based on the known resolvable dependency type: <1> The `context` field is injected based on the known resolvable dependency type:
`ApplicationContext`. `ApplicationContext`.
--
[[beans-value-annotations]] [[beans-value-annotations]]
=== Using `@Value` === Using `@Value`
@ -9489,6 +9521,7 @@ annotation lets you indicate that a component is eligible for registration
when one or more specified profiles are active. Using our preceding example, we when one or more specified profiles are active. Using our preceding example, we
can rewrite the `dataSource` configuration as follows: can rewrite the `dataSource` configuration as follows:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -9523,7 +9556,9 @@ can rewrite the `dataSource` configuration as follows:
} }
} }
---- ----
--
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -9555,6 +9590,7 @@ can rewrite the `dataSource` configuration as follows:
} }
---- ----
<1> `@Bean(destroyMethod = "")` disables default destroy method inference. <1> `@Bean(destroyMethod = "")` disables default destroy method inference.
--
NOTE: As mentioned earlier, with `@Bean` methods, you typically choose to use programmatic NOTE: As mentioned earlier, with `@Bean` methods, you typically choose to use programmatic
JNDI lookups, by using either Spring's `JndiTemplate`/`JndiLocatorDelegate` helpers or the JNDI lookups, by using either Spring's `JndiTemplate`/`JndiLocatorDelegate` helpers or the
@ -9579,6 +9615,7 @@ of creating a custom composed annotation. The following example defines a custom
`@Production` annotation that you can use as a drop-in replacement for `@Production` annotation that you can use as a drop-in replacement for
`@Profile("production")`: `@Profile("production")`:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -9596,6 +9633,7 @@ of creating a custom composed annotation. The following example defines a custom
@Profile("production") @Profile("production")
annotation class Production annotation class Production
---- ----
--
TIP: If a `@Configuration` class is marked with `@Profile`, all of the `@Bean` methods and TIP: If a `@Configuration` class is marked with `@Profile`, all of the `@Bean` methods and
`@Import` annotations associated with that class are bypassed unless one or more of `@Import` annotations associated with that class are bypassed unless one or more of
@ -9610,6 +9648,7 @@ active. For example, given `@Profile({"p1", "!p2"})`, registration will occur if
of a configuration class (for example, for alternative variants of a particular bean), as of a configuration class (for example, for alternative variants of a particular bean), as
the following example shows: the following example shows:
--
[source,java,indent=0,subs="verbatim,quotes",role="primary"] [source,java,indent=0,subs="verbatim,quotes",role="primary"]
.Java .Java
---- ----
@ -9661,6 +9700,7 @@ the following example shows:
---- ----
<1> The `standaloneDataSource` method is available only in the `development` profile. <1> The `standaloneDataSource` method is available only in the `development` profile.
<2> The `jndiDataSource` method is available only in the `production` profile. <2> The `jndiDataSource` method is available only in the `production` profile.
--
[NOTE] [NOTE]
==== ====