Spring Boot 面试最常问的问题是为什么引入一个 starter再写少量配置项目就能跑起来答案就在自动配置。一句话概括Spring Boot 通过SpringBootApplication启动组件扫描和自动配置再根据 classpath、配置属性、已有 Bean 等条件把合适的配置类和 Bean 加进 Spring 容器。满足不满足SpringBootApplicationSpringBootConfigurationComponentScanEnableAutoConfiguration通过 Import导入配置选择器读取自动配置类清单加载自动配置类条件注解是否满足注册默认 Bean跳过该配置SpringBootApplication包了什么Spring Boot 启动类通常长这样SpringBootApplicationpublicclassUserApplication{publicstaticvoidmain(String[]args){SpringApplication.run(UserApplication.class,args);}}SpringBootApplication不是一个单一能力它组合了三个关键注解注解作用SpringBootConfiguration表示当前类也是一个配置类本质上和Configuration类似ComponentScan扫描启动类所在包及其子包下的组件EnableAutoConfiguration开启自动配置是 Spring Boot 自动装配的核心这也是为什么启动类通常要放在项目根包下默认组件扫描会从启动类所在包开始往下扫。自动配置大概怎么生效课程材料里讲的是典型 Spring Boot 2.x 自动配置链路启动类上有SpringBootApplication。其中EnableAutoConfiguration负责开启自动配置。EnableAutoConfiguration内部通过Import导入自动配置选择器。自动配置选择器读取依赖包中的META-INF/spring.factories。文件里记录了一批自动配置类的全限定名。Spring Boot 加载这些配置类。配置类上的条件注解进行判断。条件满足时把配置类里的 Bean 放入 Spring 容器。自动配置不是“无脑全加载”而是有条件地加载。条件注解怎么理解自动配置类里常见这样的条件判断ConfigurationConditionalOnClass(DataSource.class)ConditionalOnMissingBean(DataSource.class)publicclassDataSourceAutoConfiguration{BeanpublicDataSourcedataSource(){returnnewHikariDataSource();}}可以这样理解条件注解含义ConditionalOnClassclasspath 下存在某个类时才生效ConditionalOnMissingBean容器中没有某个 Bean 时才创建默认 BeanConditionalOnBean容器中存在某个 Bean 时才生效ConditionalOnProperty配置文件中某个属性满足条件时才生效这就是 Spring Boot 的聪明之处你引入了相关依赖它才有机会配置你自己定义了 Bean它就尊重你的配置。starter 和自动配置的关系starter 通常做两件事帮你聚合依赖。带上对应的自动配置类。比如引入 Web starter 后项目里会有 SpringMVC、内嵌 Tomcat、JSON 转换等相关依赖。Spring Boot 检测到 classpath 中有这些类就会启用相关自动配置。所以 starter 不是魔法它本质上是“依赖 自动配置”的组合。常用注解地图Spring 常用注解组件注册依赖注入AOP 切面SpringMVC 常用注解请求映射参数绑定响应 JSONSpring Boot常用注解启动配置自动装配条件装配Spring 常用注解注解作用Component声明普通组件Controller声明 Web 控制器Service声明业务层组件Repository声明持久层组件Autowired按类型依赖注入Qualifier配合Autowired按名称注入Scope指定 Bean 作用域Configuration声明配置类ComponentScan指定组件扫描范围Bean把方法返回值注册到容器Import导入其他配置或组件SpringMVC 常用注解注解作用RequestMapping映射请求路径RequestBody接收请求体 JSONRequestParam获取请求参数PathVariable获取路径变量ResponseBody返回对象写入响应体RequestHeader获取请求头RestControllerController ResponseBodySpring Boot 常用注解注解作用SpringBootConfiguration声明 Spring Boot 配置类EnableAutoConfiguration开启自动配置SpringBootApplication启动类组合注解面试回答模板可以这样回答Spring Boot 自动配置的核心是SpringBootApplication它组合了SpringBootConfiguration、ComponentScan和EnableAutoConfiguration。其中EnableAutoConfiguration会通过Import导入自动配置选择器读取依赖包下的自动配置类信息然后根据条件注解判断是否加载对应配置类。比如ConditionalOnClass判断 classpath 下是否存在某个类ConditionalOnMissingBean判断容器中是否已经有用户自定义 Bean。条件满足时自动配置类中的 Bean 会被注册到 Spring 容器中。小结Spring Boot 自动配置的本质不是“自动猜”而是starter 提供依赖和配置类 - 自动配置选择器找到配置类 - 条件注解决定是否生效 - Bean 注册进容器。把这条线讲清楚比背一堆注解名更有价值。