Java面试题更新 2026-08-03

请列举 Spring 中把 Bean 定义注册进容器的常见途径,并说明各自的使用场景。

考察说明

考查对 Spring IoC 容器 Bean 注册机制的整体掌握程度。

回答思路

  1. 【回答框架 1】Bean 注册的本质是把 BeanDefinition 放入容器,常见方式包括 XML 配置、注解扫描、Java 配置类、编程式注册和自动装配。
  2. 【回答框架 2】XML 配置通过 <bean> 标签显式声明,适用于传统项目或需外部化配置的场景;注解扫描利用 @Component 及衍生注解配合组件扫描,开发最常用。
  3. 【回答框架 3】Java 配置类通过 @Configuration 加 @Bean 方法显式注册,类型安全且适合复杂初始化逻辑;编程式注册使用 BeanDefinitionRegistry 或 BeanFactoryPostProcessor 动态添加,灵活但较少直接使用。
  4. 【回答框架 4】自动装配通过 @Autowired 等按类型或名称注入依赖,不直接注册 Bean 但影响装配方式。
  5. 【回答框架 5】场景选择:简单项目用注解扫描,需第三方类时用 @Bean 或 XML,动态场景考虑编程式注册。
  6. 【关键点 1】XML <bean> 声明是最基础的显式注册方式。
  7. 【关键点 2】@ComponentScan 配合 @Component 等注解实现扫描注册。
  8. 【关键点 3】@Configuration 类中 @Bean 方法用于显式注册单例 Bean。
  9. 【关键点 4】BeanDefinitionRegistryPostProcessor 可编程式注册 BeanDefinition。
  10. 【关键点 5】注册方式影响 Bean 的生命周期和依赖注入方式。
  11. 【易错点 1】混淆组件扫描与自动装配:扫描负责注册,自动装配负责注入依赖。
  12. 【易错点 2】编程式注册时忽略 BeanDefinition 的初始化属性导致误差。
  13. 【易错点 3】同一 Bean 类型多实例时未明确 qualifier 引起注入冲突。