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 分钟前
【debug调试详解-idea】
java·ide·intellij-idea·调试·远程调试
程序猿阿越3 分钟前
AutoMQ源码(一)读、写、Compaction
java·后端·源码
ywl47081208721 分钟前
jwt生产token,简单版helloworld
java·数据库·spring
未若君雅裁26 分钟前
生产问题排查与性能瓶颈定位:日志、监控、链路追踪、压测与Arthas
java·web安全
器灵科技34 分钟前
AI视频工具实测:Seedance/可灵/HappyHorse谁最能打?
java·运维·数据库·人工智能·github
foggyprojects44 分钟前
一个企业查询问题,如何从自然语言走到 DSL 再走到 SQL
后端
南部余额1 小时前
RabbitMQ 进阶:延迟队列完全指南
java·分布式·spring·rabbitmq
掘金者阿豪1 小时前
PDO连金仓数据库(下篇):预处理语句、大对象和批量操作
后端
phltxy1 小时前
Spring AI Agents 智能体模式实战
java·人工智能·spring
RealPluto1 小时前
Rancher证书轮换过期导致不能访问UI问题处理
后端