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
相关推荐
武子康2 小时前
大数据-96 SparkSQL 语句详解:从 DataFrame 到 SQL 查询与 Hive 集成全解析
大数据·后端·spark
孤廖2 小时前
【算法磨剑:用 C++ 思考的艺术・Dijkstra 实战】弱化版 vs 标准版模板,洛谷 P3371/P4779 双题精讲
java·开发语言·c++·程序人生·算法·贪心算法·启发式算法
码畜也有梦想2 小时前
Maven中optional的作用
java·jenkins·maven
云和数据.ChenGuang3 小时前
java常见SSL bug解决方案
java·bug·ssl
songx_993 小时前
leetcode29( 有效的括号)
java·数据结构·算法·leetcode
于樱花森上飞舞3 小时前
【java】常见排序算法详解
java·算法·排序算法
维持好习惯3 小时前
复杂Excel文件导入功能(使用AI快速实现)
java·spring boot·excel
酷炫码神3 小时前
第 2 篇:Java 入门实战(JDK8 版)—— 编写第一个 Java 程序,理解基础运行逻辑
java·开发语言·策略模式
像风一样自由20203 小时前
Go语言详细指南:特点、应用场景与开发工具
开发语言·后端·golang