Spring Boot 极简入门:从繁琐配置到一键启动的魔法之旅
"Spring Boot 不是另一种框架,而是让你忘记框架的存在。"
------ 本文将带你回顾 Spring 到 Spring Boot 的演进逻辑,并用 10 分钟完成 MyBatis 集成实战。
1 为什么需要 Spring Boot?
阶段 | 痛点 | Spring Boot 解法 |
---|---|---|
Spring 早期 | 大量 XML 配置、依赖坐标地狱 | Starter 一键依赖 |
Spring 4.x | @Configuration + @Import 仍显啰嗦 |
自动装配 |
微服务时代 | 多环境配置、外部化配置混乱 | application.yml 统一管理 |
Spring Boot 在 Spring 5.2.8 基础上,做两件事:
- Bean 自动注入:引入 Starter → 核心 Bean 直接就绪。
- 配置中心化 :
application.yml
取代分散的 XML / properties。
2 自动装配原理(面试高频)
@SpringBootApplication
=@Configuration
+@EnableAutoConfiguration
+@ComponentScan
spring-boot-autoconfigure
里预置 120+ 自动配置类,按需生效。@ConditionalOnClass
、@ConditionalOnMissingBean
精准控制 Bean 注册。
一句话 :约定优于配置 ------ 有就生效,没有就跳过。
3 启动流程速览
Main 方法
↓
SpringApplication.run()
↓
推断应用类型(Servlet / Reactive)
↓
创建 Environment → 读取 application.yml
↓
调用 AutoConfigurationImportSelector → 加载 META-INF/spring.factories
↓
实例化 IOC 容器 → 启动内嵌 Tomcat
4 实战:Spring Boot 集成 MyBatis(3 步完成)
4.1 引入依赖(仅需 1 个 Starter)
xml
<!-- MyBatis + Spring Boot 官方 Starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
4.2 统一配置 application.yml
yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml # XML 映射
type-aliases-package: com.example.entity # 实体别名
4.3 开启 Mapper 扫描 & 使用
java
@SpringBootApplication
@MapperScan("com.example.mapper") // 3. 扫描 Mapper 接口
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
java
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(Long id);
}
启动后:无需任何 XML 或 JavaConfig,直接访问数据库。
5 配置文件优先级(外部化配置)
Spring Boot 按以下顺序覆盖(高 → 低):
- 命令行参数
application-{profile}.yml
application.yml
- 默认属性(
@ConfigurationProperties
)
示例:
bash
java -jar app.jar --server.port=9090 --spring.profiles.active=prod
6 面试金句速记
问题 | 一句话答案 |
---|---|
Starter 是什么? | 预定义依赖 + 自动配置,开箱即用。 |
自动装配触发条件? | @ConditionalOnClass 判断类路径存在即生效。 |
如何关闭自动配置? | @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) |
多环境配置? | application-dev.yml 、application-prod.yml + --spring.profiles.active 。 |
7 总结
Spring Boot 用 "约定优于配置" 的理念,把我们从 XML 地狱 拯救出来:
- Starter 负责"一键依赖";
- AutoConfiguration 负责"智能装配";
- application.yml 负责"一处配置,到处生效"。
掌握这三板斧,你的 Spring Boot 面试和项目开发都能 事半功倍。