SpringBoot系列之从繁琐配置到一键启动之旅

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 基础上,做两件事:

  1. Bean 自动注入:引入 Starter → 核心 Bean 直接就绪。
  2. 配置中心化application.yml 取代分散的 XML / properties。

2 自动装配原理(面试高频)

  1. @SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan
  2. spring-boot-autoconfigure 里预置 120+ 自动配置类,按需生效。
  3. @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 按以下顺序覆盖(高 → 低):

  1. 命令行参数
  2. application-{profile}.yml
  3. application.yml
  4. 默认属性(@ConfigurationProperties

示例:

bash 复制代码
java -jar app.jar --server.port=9090 --spring.profiles.active=prod

6 面试金句速记

问题 一句话答案
Starter 是什么? 预定义依赖 + 自动配置,开箱即用。
自动装配触发条件? @ConditionalOnClass 判断类路径存在即生效。
如何关闭自动配置? @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
多环境配置? application-dev.ymlapplication-prod.yml + --spring.profiles.active

7 总结

Spring Boot 用 "约定优于配置" 的理念,把我们从 XML 地狱 拯救出来:

  • Starter 负责"一键依赖";
  • AutoConfiguration 负责"智能装配";
  • application.yml 负责"一处配置,到处生效"。

掌握这三板斧,你的 Spring Boot 面试和项目开发都能 事半功倍

相关推荐
LQxdp几秒前
复现-[Java Puzzle #2 WP] HEAD权限绕过与字符截断CRLF
java·开发语言·漏洞复现·java 代码审计
小坏讲微服务13 分钟前
SpringBoot4.0整合Scala完整使用
java·开发语言·spring boot·后端·scala·mybatis
泉城老铁20 分钟前
windows服务器mysql数据库备份脚本
java·后端·mysql
却尘22 分钟前
用 25 个概念彻底看懂SQL多维分析的底层逻辑
后端·sql·mysql
神奇的板烧24 分钟前
Java泛型不变性引发的类型转换问题及解决方案
java·c#
白衣鸽子25 分钟前
JsonUtils:打造企业级的序列化与反序列化瑞士军刀
后端·开源
计算机学姐35 分钟前
基于Python的校园美食推荐系统【2026最新】
开发语言·vue.js·后端·python·mysql·django·推荐算法
q***484137 分钟前
十八,Spring Boot 整合 MyBatis-Plus 的详细配置
spring boot·后端·mybatis
悦悦子a啊1 小时前
[Java]实验--编写TCP客户端程序
java·tcp/ip·php