Spring Boot 详解(从入门到原理)

一、什么是 Spring Boot

Spring Boot 是基于 Spring Framework 的快速开发框架,核心目标是:

👉 让开发更简单(约定优于配置)


核心特点

  1. 开箱即用(Starter 依赖)

  2. 自动配置(Auto Configuration)

  3. 内嵌服务器(Tomcat/Jetty)

  4. 零 XML 配置

  5. 快速开发 + 部署


二、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

优势

  1. 不需要外部部署

  2. 可打包成 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 启动时做了什么?

👉 三件事:

  1. 创建容器

  2. 加载 Bean

  3. 启动 Tomcat


4. 如何自定义 Starter?

步骤:

  1. 创建模块

  2. 写 AutoConfiguration

  3. 配置 spring.factories


十二、Spring Boot 优缺点


优点

  1. 开发效率高

  2. 上手快

  3. 社区强大


缺点

  1. 封装过深(不易排错)

  2. 启动稍慢

  3. 自动配置可能不透明


十三、总结(速记版)


  1. 核心:自动配置 + Starter

  2. 启动类:@SpringBootApplication

  3. 配置文件:application.yml

  4. 内嵌服务器:Tomcat

  5. 自动配置核心:spring.factories

  6. 核心流程:run → 容器 → Tomcat

相关推荐
于先生吖2 小时前
Java框架开发短剧漫剧系统:后台管理与接口开发
java·开发语言
Victor3563 小时前
MongoDB(51)什么是分片?
后端
Victor3563 小时前
MongoDB(50)副本集中的角色有哪些?
后端
daidaidaiyu3 小时前
Spring IOC 源码学习 声明式事务的入口点
java·spring
myloveasuka3 小时前
[Java]查找算法&排序算法
java·算法·排序算法
清水白石0083 小时前
Free-Threaded Python 实战指南:机遇、风险与 PoC 验证方案
java·python·算法
发际线还在4 小时前
互联网大厂Java三轮面试全流程实战问答与解析
java·数据库·分布式·面试·并发·系统设计·大厂
IT_陈寒4 小时前
JavaScript开发者必看:5个让你的代码性能翻倍的隐藏技巧
前端·人工智能·后端
shengjk14 小时前
大数据工程师必看:为什么你的 IN 查询在 Flink/Spark 上慢到离谱?
后端