SpringBoot
springboot是spring家族的脚手架/整合框架
一、怎么集成的
springboot本质是一个容器+自动配置中心,把spring家族的常见组合都"预配好了",用starter
包来集成
Spring MVC(Web 层)
- 依赖:
spring-boot-starter-web
- 自动配置内容:
- 注册
DispatcherServlet
、HandlerMapping
、HandlerAdapter
- 内置 JSON 序列化(默认 Jackson)
- 静态资源映射(
/static
,/public
,/resources
) - 内置异常处理机制
@ControllerAdvice
- 注册
Spring Data JPA / JDBC(数据访问层)
- 依赖:
spring-boot-starter-data-jpa
/spring-boot-starter-jdbc
- 自动配置内容:
- 自动创建
DataSource
- 扫描
@Repository
- 提供
EntityManager
或JdbcTemplate
- 根据
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
→ JavaMailSenderspring-boot-starter-amqp
→ RabbitMQspring-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. 外部配置绑定
-
@ConfigurationProperties
把application.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
。