1. Java面试中的Spring Boot核心特性解析
1.1 Spring Boot的自动配置机制
Spring Boot最核心的特性之一就是自动配置。当我们在项目中添加@SpringBootApplication注解时,实际上包含了三个关键注解:@Configuration、@EnableAutoConfiguration和@ComponentScan。其中@EnableAutoConfiguration是自动配置的核心。
自动配置的工作原理是基于类路径下的依赖进行智能判断。Spring Boot会检查classpath中存在的库,然后根据这些库自动配置相应的Bean。例如,当检测到classpath中有H2数据库的jar包时,Spring Boot会自动配置内存数据库;当发现Spring MVC相关类时,会自动配置DispatcherServlet。
提示:虽然自动配置很智能,但开发者可以通过在application.properties或application.yml中设置
spring.autoconfigure.exclude属性来排除特定的自动配置类。
1.2 嵌入式服务器的工作原理
Spring Boot内置了Tomcat、Jetty和Undertow三种嵌入式服务器,默认使用Tomcat。嵌入式服务器的实现原理是:
- 当项目启动时,Spring Boot会检测classpath中的服务器依赖
- 根据检测结果自动创建并配置对应的Web服务器实例
- 服务器实例与Spring应用上下文绑定,共享同一个JVM进程
这种设计带来了几个显著优势:
- 简化部署:不再需要单独安装和配置Web服务器
- 开发效率提升:可以直接运行main方法启动应用
- 环境一致性:开发、测试和生产环境使用相同的服务器配置
1.3 依赖管理的实现方式
Spring Boot通过两种机制简化依赖管理:
- Starter POMs:这些是预定义的依赖描述符,例如
spring-boot-starter-web包含了开发Web应用所需的所有常见依赖(Spring MVC、Jackson、Tomcat等)。开发者只需要引入一个starter,而不需要关心各个子依赖的版本兼容问题。
