Spring Boot
Spring Boot 通过约定大于配置的理念,消除繁琐的 XML 配置和样板代码,让 Spring 应用开箱即用。
核心特性
| 特性 | 说明 |
|---|---|
| 自动配置 | 根据依赖自动配置 Bean |
| 独立运行 | jar 包方式独立运行,内嵌 Tomcat/Jetty |
| Starter | 一组依赖描述,简化依赖管理 |
| Actuator | 准生产级监控端点 |
| 无 XML 配置 | 极简配置方式 |
自动配置原理
自动配置是 Spring Boot 的核心能力,启动时通过 @EnableAutoConfiguration 加载 META-INF/spring.factories,根据类路径中的依赖自动配置 Bean。
@SpringBootApplication
// 等价于
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}提示
@SpringBootApplication 这是一个组合注解,包含 @Configuration、@EnableAutoConfiguration、@ComponentScan 三个注解。
Starter 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>| Starter | 用途 |
|---|---|
| spring-boot-starter-web | Web 应用 |
| spring-boot-starter-data-jpa | JPA 持久化 |
| spring-boot-starter-security | 安全认证 |
| spring-boot-starter-actuator | 应用监控 |
| spring-boot-starter-test | 测试支持 |
配置文件
application.yml
server:
port: 8080
spring:
application:
name: myappProfile 多环境
spring:
profiles:
active: dev启动时指定:java -jar app.jar --spring.profiles.active=prod
配置属性绑定
@Component
@ConfigurationProperties(prefix = "app")
public class AppProperties {
private String name;
private int timeout;
}Actuator 监控
Actuator 提供生产级监控端点,详见 SpringBootActuator。
management:
endpoints:
web:
exposure:
include: health,info,metrics核心注解速查
| 注解 | 说明 |
|---|---|
@SpringBootApplication | 组合注解,入口注解 |
@Configuration | 声明配置类 |
@EnableAutoConfiguration | 启用自动配置 |
@ComponentScan | 组件扫描 |
@ConfigurationProperties | 绑定配置属性 |
微服务技术选型
Spring Boot + Spring Cloud = 微服务解决方案:
| 场景 | 推荐方案 |
|---|---|
| 注册中心 | Nacos(推荐)、Eureka、Consul |
| 服务调用 | Feign(HTTP)、Dubbo(RPC)、gRPC |
| 配置中心 | Nacos(推荐)、Apollo、Spring Cloud Config |
| 消息队列 | RocketMQ(事务)、Kafka(高吞吐)、RabbitMQ |
| 分布式事务 | Seata AT(推荐)、TCC、MQ 最终一致性 |
| 服务容错 | Sentinel(推荐)、Resilience4j |
| API 网关 | Gateway(推荐)、Zuul |
| 链路追踪 | SkyWalking(推荐)、Zipkin |
注意
版本对应关系 Spring Boot 2.x 对应 Spring Cloud Greenwich ~ Hoxton,Spring Cloud Alibaba 2021.x,使用前务必确认版本兼容性。
学习路径
- 先学 Spring Boot 基础(Web 开发 → 数据访问)
- 再学 Spring Cloud(注册中心 → 服务调用 → 网关)
- 最后学分布式(消息队列 → 分布式事务 → 服务治理)