前言:Spring 通过扫描类路径(Classpath)来查找带有特定注解(如 @Component、@Service、@Repository 等)的类,并将它们注册为 Spring 容器中的 Bean。
1 Bean扫描
- Bean 扫描是 Spring 框架的核心功能之一,通过注解和配置可以灵活控制 Bean 的注册和扫描范围
- Bean的扫描范围:Spring Boot 默认会扫描主应用程序类(即带有 @SpringBootApplication 注解的类)所在包及其子包中的所有组件【原因在第四点】
- 自定义扫描范围:使用 @ComponentScan 注解指定要扫描的包路径。
@SpringBootApplication
@ComponentScan(basePackages = {"com.example", "com.anotherpackage"})
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}
- @SpringBootApplication 是一个组合注解,包含以下三个核心注解:
@SpringBootConfiguration:标记该类为 Spring Boot 的配置类。
@EnableAutoConfiguration:启用 Spring Boot 的自动配置功能。
@ComponentScan: 启用组件扫描功能,默认扫描主应用程序类所在的包及其子包。