SpringBoot应用开发指南:从入门到高级配置与自动装配原理

SpringBoot

springboot是spring家族的脚手架/整合框架

一、怎么集成的

springboot本质是一个容器+自动配置中心,把spring家族的常见组合都"预配好了",用starter包来集成

Spring MVC(Web 层)

  • 依赖:spring-boot-starter-web
  • 自动配置内容:
    • 注册 DispatcherServletHandlerMappingHandlerAdapter
    • 内置 JSON 序列化(默认 Jackson)
    • 静态资源映射(/static, /public, /resources
    • 内置异常处理机制 @ControllerAdvice

Spring Data JPA / JDBC(数据访问层)

  • 依赖:spring-boot-starter-data-jpa / spring-boot-starter-jdbc
  • 自动配置内容:
    • 自动创建 DataSource
    • 扫描 @Repository
    • 提供 EntityManagerJdbcTemplate
    • 根据 application.yml 配置数据库连接和方言

Spring Security(权限认证)

  • 依赖:spring-boot-starter-security
  • 自动配置内容:
    • 默认所有请求需要认证
    • 自动注册 UserDetailsService(默认内存用户)
    • 自动配置 CSRF、防火墙过滤器链

Spring AOP

  • 依赖:spring-boot-starter-aop
  • 自动配置 @EnableAspectJAutoProxy
  • 自动支持 @Aspect 切面

Spring Cache

  • 依赖:spring-boot-starter-cache
  • 自动启用 @EnableCaching
  • 支持 Redis、EhCache 等 CacheManager

Spring Mail、Spring Batch、Spring AMQP、Spring Kafka

  • 都有对应 starter,比如:
    • spring-boot-starter-mail → JavaMailSender
    • spring-boot-starter-amqp → RabbitMQ
    • spring-boot-starter-kafka → KafkaTemplate

二、相比ssm的优势

1. 配置量差异

  • SSM:
    • 需要写一堆 XML(Spring 配置、MyBatis 映射、事务管理、Spring MVC DispatcherServlet)
    • 还要手动注册 Bean、Mapper 扫描器等
  • Spring Boot:
    • 配置文件只需 application.yml
    • MyBatis 直接用 spring-boot-starter-mybatis,无需额外 XML(Mapper 接口 + 注解/简化 XML 即可)

2. 启动和部署

  • SSM: 必须依赖外部 Tomcat/Jetty,打 war 包,放到容器里跑。
  • Spring Boot: 内嵌 Tomcat(或 Jetty/Undertow),直接 java -jar 运行。

3. 生态与扩展

  • SSM: 基本就是 CRUD,后续要引入消息队列、缓存、定时任务等,需要额外配置。
  • Spring Boot: starter 齐全,一行依赖即可集成 Kafka、Redis、Quartz、ElasticSearch。

4. 社区和标准化

  • Spring Boot 已经成为 Spring 官方推荐的标准,SSM 已逐渐淘汰(大公司新项目基本不再用 SSM)。

三、springboot自动配置核心原理

1. 核心注解

  • @SpringBootApplication = @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan
  • @EnableAutoConfiguration → 读取 META-INF/spring.factories 中的配置类

2. 条件装配(@Conditional)

  • 例如:

    复制代码
    @Configuration
    @ConditionalOnClass(DataSource.class)
    public class DataSourceAutoConfiguration { ... }
  • 如果项目里有 DataSource 类,就自动创建数据库连接池 Bean。

3. 外部配置绑定

  • @ConfigurationPropertiesapplication.yml 的配置绑定到 Bean

  • 如:

    复制代码
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/test
        username: root
        password: 123456

    自动绑定到 DataSourceProperties

4. Starter + AutoConfiguration 配合

  • 你引入 spring-boot-starter-web → Boot 自动加载 WebMvcAutoConfiguration → 自动装配 SpringMVC。

四、自动开始了什么

1. 内嵌容器

  • 默认启动 Tomcat,扫描并注册 Servlet、Filter、Listener。

2. 常用 Bean 注册

  • MVC 组件、事务管理器、异常处理、消息转换器、数据源、缓存管理器。

3. 配置中心

  • 外部化配置,支持 yml、properties、环境变量。

4. 健康检查 & 监控(Actuator)

  • 一行依赖就能查看 /actuator/health/metrics
相关推荐
涡能增压发动积19 小时前
同样的代码循环 10次正常 循环 100次就抛异常?自定义 Comparator 的 bug 让我丢尽颜面
后端
云烟成雨TD19 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
Wenweno0o19 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
于慨19 小时前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
swg32132119 小时前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
tyung19 小时前
一个 main.go 搞定协作白板:你画一笔,全世界都看见
后端·go
gelald19 小时前
SpringBoot - 自动配置原理
java·spring boot·后端
@yanyu66619 小时前
07-引入element布局及spring boot完善后端
javascript·vue.js·spring boot
殷紫川19 小时前
深入理解 AQS:从架构到实现,解锁 Java 并发编程的核心密钥
java
一轮弯弯的明月19 小时前
贝尔数求集合划分方案总数
java·笔记·蓝桥杯·学习心得