一、什么是 Spring Boot
Spring Boot 是基于 Spring Framework 的快速开发框架,核心目标是:
👉 让开发更简单(约定优于配置)
核心特点
-
开箱即用(Starter 依赖)
-
自动配置(Auto Configuration)
-
内嵌服务器(Tomcat/Jetty)
-
零 XML 配置
-
快速开发 + 部署
二、Spring Boot 核心思想
1. 约定优于配置
传统 Spring:
XML
<bean id="userService" class="xxx.UserService"/>
Spring Boot:
java
@Service
public class UserService {}
👉 不再需要大量 XML
2. Starter 依赖机制
例如:
XML
spring-boot-starter-web
它会自动帮你引入:
-
Spring MVC
-
Jackson
-
Tomcat
👉 本质:依赖整合
三、Spring Boot 项目结构
标准结构
com.example.demo
├── controller
├── service
├── dao
├── entity
└── DemoApplication.java
启动类
java
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication 解析(核心)
相当于:
java
@Configuration
@EnableAutoConfiguration
@ComponentScan
四、自动配置原理(重点!面试必问)
核心注解
java
@EnableAutoConfiguration
自动配置流程
启动 → 加载配置类 → 条件判断 → 注入 Bean
核心文件
META-INF/spring.factories
Spring Boot 启动时:
👉 会加载所有自动配置类
条件注解(关键)
常见:
java
@ConditionalOnClass
@ConditionalOnMissingBean
@ConditionalOnProperty
示例
java
@ConditionalOnClass(DataSource.class)
public class DataSourceAutoConfiguration {
}
👉 类存在才加载
五、Spring Boot 配置文件
1. application.yml(推荐)
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
2. 配置绑定
java
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceConfig {
private String url;
}
3. @Value 注入
java
@Value("${server.port}")
private int port;
六、Spring Boot Web 开发
1. Controller
java
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/test")
public String test() {
return "hello";
}
}
2. 请求流程
请求 → DispatcherServlet → Controller → Service → 返回结果
👉 核心依赖:Spring MVC
七、内嵌服务器原理
Spring Boot 默认使用:
- Tomcat
启动流程
main()
→ SpringApplication.run()
→ 创建容器
→ 启动 Tomcat
优势
-
不需要外部部署
-
可打包成 jar 运行
java -jar app.jar
八、Spring Boot 常用注解
1. 组件注入
| 注解 | 作用 |
|---|---|
| @Component | 普通组件 |
| @Service | 业务层 |
| @Repository | DAO 层 |
| @Controller | 控制层 |
2. Web 注解
| 注解 | 作用 |
|---|---|
| @RestController | 返回 JSON |
| @RequestMapping | 路径映射 |
| @GetMapping | GET 请求 |
| @PostMapping | POST 请求 |
3. 注入相关
java
@Autowired
@Resource
九、Spring Boot 整合 MyBatis
依赖
XML
spring-boot-starter-jdbc
mybatis-spring-boot-starter
Mapper
java
@Mapper
public interface UserMapper {
List<User> selectAll();
}
配置
mybatis:
mapper-locations: classpath:mapper/*.xml
十、Spring Boot 启动流程(源码级)
核心步骤
1. 创建 SpringApplication
2. 推断应用类型
3. 加载配置
4. 创建容器(ApplicationContext)
5. 刷新容器
6. 启动内嵌服务器
关键方法
SpringApplication.run()
十一、Spring Boot 常见面试题
1. Spring Boot 和 Spring 有什么区别?
| Spring | Spring Boot |
|---|---|
| 配置复杂 | 自动配置 |
| 需要 XML | 零配置 |
| 手动整合 | Starter |
2. 自动配置是如何实现的?
👉 核心:
-
@EnableAutoConfiguration
-
spring.factories
-
条件注解
3. Spring Boot 启动时做了什么?
👉 三件事:
-
创建容器
-
加载 Bean
-
启动 Tomcat
4. 如何自定义 Starter?
步骤:
-
创建模块
-
写 AutoConfiguration
-
配置 spring.factories
十二、Spring Boot 优缺点
优点
-
开发效率高
-
上手快
-
社区强大
缺点
-
封装过深(不易排错)
-
启动稍慢
-
自动配置可能不透明
十三、总结(速记版)
-
核心:自动配置 + Starter
-
启动类:@SpringBootApplication
-
配置文件:application.yml
-
内嵌服务器:Tomcat
-
自动配置核心:spring.factories
-
核心流程:run → 容器 → Tomcat