本章中的大多数例子都使用 XML 来指定配置元数据,在 Spring 容器中产生每个 BeanDefinition。上一节(基于注解的容器配置)演示了如何通过源级注解提供大量的配置元数据。然而,即使在这些例子中,「基础」Bean 定义也是在 XML 文件中明确定义的,而注解只 驱动 依赖性注入。本节描述了一个通过扫描 classpath 来隐式检测候选组件的选项。候选组件是与过滤器标准相匹配的类,并且有一个在容器中注册的相应的 bean 定义。这样就不需要使用 XML 来执行 bean 注册了。相反,你可以使用注解(例如@Component)、AspectJ 类型表达式或你自己的自定义过滤标准来选择哪些类在容器中注册 Bean 定义。

    :::tips 从 Spring 3.0 开始,Spring JavaConfig 项目提供的许多功能成为 Spring 框架的核心部分。这允许你使用 Java 来定义 Bean,而不是使用传统的 XML 文件。看看 @Configuration、@Bean、@Import和@DependsOn注解,看看如何使用这些新特性的例子。 :::