diff --git a/src/asciidoc/index.adoc b/src/asciidoc/index.adoc
index fe2e82c2cfa..c0fee27a969 100644
--- a/src/asciidoc/index.adoc
+++ b/src/asciidoc/index.adoc
@@ -5946,10 +5946,28 @@ are eligible for such autodetection:
}
----
-To autodetect these classes and register the corresponding beans, you need to include
-the following element in XML, where the base-package element is a common parent package
-for the two classes. (Alternatively, you can specify a comma-separated list that
-includes the parent package of each class.)
+To autodetect these classes and register the corresponding beans, you need to add
+`@ComponentScan` to your `@Configuration` class, where the `basePackages` attribute
+is a common parent package for the two classes. (Alternatively, you can specify a
+comma-separated list that includes the parent package of each class.)
+
+[source,java,indent=0]
+[subs="verbatim,quotes"]
+----
+ @Configuration
+ @ComponentScan(basePackages = "org.example")
+ public class AppConfig {
+ ...
+ }
+----
+
+[NOTE]
+====
+for concision, the above may have used the `value` attribute of the
+annotation, i.e. `ComponentScan("org.example")`
+====
+
+The following is an alternative using XML
[source,xml,indent=0]
[subs="verbatim,quotes"]
@@ -6005,8 +6023,9 @@ with a value of false.
By default, classes annotated with `@Component`, `@Repository`, `@Service`,
`@Controller`, or a custom annotation that itself is annotated with `@Component` are the
only detected candidate components. However, you can modify and extend this behavior
-simply by applying custom filters. Add them as __include-filter__ or __exclude-filter__
-sub-elements of the `component-scan` element. Each filter element requires the `type`
+simply by applying custom filters. Add them as __includeFilters__ or __excludeFilters__
+parameters of the `@ComponentScan` annotation (or as __include-filter__ or __exclude-filter__
+sub-elements of the `component-scan` element). Each filter element requires the `type`
and `expression` attributes. The following table describes the filtering options.
[[beans-scanning-filters-tbl]]
@@ -6014,7 +6033,7 @@ and `expression` attributes. The following table describes the filtering options
|===
| Filter Type| Example Expression| Description
-| annotation
+| annotation (default)
| `org.example.SomeAnnotation`
| An annotation to be present at the type level in target components.
@@ -6035,9 +6054,24 @@ and `expression` attributes. The following table describes the filtering options
| A custom implementation of the `org.springframework.core.type .TypeFilter` interface.
|===
-The following example shows the XML configuration ignoring all `@Repository` annotations
+The following example shows the configuration ignoring all `@Repository` annotations
and using "stub" repositories instead.
+
+[source,java,indent=0]
+[subs="verbatim,quotes"]
+----
+ @Configuration
+ @ComponentScan(basePackages = "org.example",
+ includeFilters = @Filter(type = FilterType.REGEX, pattern = ".*Stub.*Repository"),
+ excludeFilters = @Filter(Repository.class))
+ public class AppConfig {
+ ...
+ }
+----
+
+and the equivalent using XML
+
[source,xml,indent=0]
[subs="verbatim,quotes"]
----
@@ -6053,10 +6087,10 @@ and using "stub" repositories instead.
[NOTE]
====
-You can also disable the default filters by providing __use-default-filters="false"__ as
-an attribute of the element. This will in effect disable automatic
-detection of classes annotated with `@Component`, `@Repository`, `@Service`, or
-`@Controller`.
+You can also disable the default filters by setting `useDefaultFilters=false` on the annotation or
+providing `use-default-filters="false"` as an attribute of the element. This
+will in effect disable automatic detection of classes annotated with `@Component`, `@Repository`,
+`@Service`, or `@Controller`.
====
@@ -6201,6 +6235,16 @@ interface, and be sure to include a default no-arg constructor. Then, provide th
fully-qualified class name when configuring the scanner:
====
+[source,java,indent=0]
+[subs="verbatim,quotes"]
+----
+ @Configuration
+ @ComponentScan(basePackages = "org.example", nameGenerator = MyNameGenerator.class)
+ public class AppConfig {
+ ...
+ }
+----
+
[source,xml,indent=0]
[subs="verbatim,quotes"]
----
@@ -6242,6 +6286,16 @@ interface, and be sure to include a default no-arg constructor. Then, provide th
fully-qualified class name when configuring the scanner:
====
+[source,java,indent=0]
+[subs="verbatim,quotes"]
+----
+ @Configuration
+ @ComponentScan(basePackages = "org.example", scopeResolver = MyScopeResolver.class)
+ public class AppConfig {
+ ...
+ }
+----
+
[source,xml,indent=0]
[subs="verbatim,quotes"]
----
@@ -6257,6 +6311,16 @@ For this purpose, a __scoped-proxy__ attribute is available on the component-sca
element. The three possible values are: no, interfaces, and targetClass. For example,
the following configuration will result in standard JDK dynamic proxies:
+[source,java,indent=0]
+[subs="verbatim,quotes"]
+----
+ @Configuration
+ @ComponentScan(basePackages = "org.example", scopedProxy = ScopedProxyMode.INTERFACES)
+ public class AppConfig {
+ ...
+ }
+----
+
[source,xml,indent=0]
[subs="verbatim,quotes"]
----
@@ -6452,12 +6516,14 @@ can be used in a similar fashion:
When using `@Named`, it is possible to use
component-scanning in the exact same way as when using Spring annotations:
-[source,xml,indent=0]
+[source,java,indent=0]
[subs="verbatim,quotes"]
----
-
-
-
+ @Configuration
+ @ComponentScan(basePackages = "org.example")
+ public class AppConfig {
+ ...
+ }
----
@@ -6654,8 +6720,23 @@ when programmatically building an `AnnotationConfigApplicationContext`.
[[beans-java-instantiating-container-scan]]
===== Enabling component scanning with scan(String...)
-Experienced Spring users will be familiar with the following commonly-used XML
-declaration from Spring's `context:` namespace
+To enable component scanning, just annotate your `@Configuration` class as follows:
+
+[source,java,indent=0]
+[subs="verbatim,quotes"]
+----
+ @Configuration
+ @ComponentScan(basePackages = "com.acme")
+ public class AppConfig {
+ ...
+ }
+----
+
+[TIP]
+====
+
+Experienced Spring users will be familiar with the XML declaration equivalent from
+Spring's `context:` namespace
[source,xml,indent=0]
[subs="verbatim,quotes"]
@@ -6664,6 +6745,8 @@ declaration from Spring's `context:` namespace
----
+====
+
In the example above, the `com.acme` package will be scanned, looking for any
`@Component`-annotated classes, and those classes will be registered as Spring bean