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
相关推荐
Miraitowa_cheems21 分钟前
LeetCode算法日记 - Day 59: 字母大小写全排列、优美的排列
java·数据结构·算法·leetcode·决策树·职场和发展·深度优先
JavaPub-rodert43 分钟前
用 go-commons 打造更优雅的字符串处理工具
开发语言·后端·golang
似水流年,是谁苍白了等待1 小时前
Spring Boot + MyBatis plus + MySQL 实现位置直线距离实时计算
spring boot·mysql·mybatis
workflower1 小时前
将图片中的图形转换为可编辑的 PPT 图形
java·开发语言·tomcat·powerpoint·个人开发·结对编程
卡戎-caryon2 小时前
【Java SE】06. 数组
java·开发语言
想躺平的咸鱼干2 小时前
Spring AI Alibaba
java·人工智能·spring
老华带你飞2 小时前
学生信息管理系统|基于Springboot的学生信息管理系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·学生信息管理系统
聪明的笨猪猪2 小时前
Java SE “泛型 + 注解 + 反射”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
磨十三2 小时前
C++ 类型转换全面解析:从 C 风格到 C++ 风格
java·c语言·c++
Zzzzmo_3 小时前
Java数据结构:ArrayList与顺序表2
java·数据结构