1.1 什么是Spring Boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
核心特性
自动配置(Auto Configuration)
- 根据类路径中的jar包、类,为jar包里的类自动配置Bean
- 大大减少了配置工作
起步依赖(Starter Dependencies)
- 将常用的依赖分组进行了整合,称为Starter
- 一个Starter就是一个依赖坐标的集合
内嵌服务器
- 内嵌Tomcat、Jetty或Undertow服务器
- 无需部署WAR文件
生产就绪特性
- 提供监控、健康检查、外部化配置等功能
1.2 Spring Boot的优势
开发效率提升
- 快速启动:最小化配置,快速搭建项目
- 约定优于配置:遵循约定,减少配置文件
- 自动配置:智能的默认配置
部署简化
- 独立运行:内嵌服务器,jar包直接运行
- 云原生:天然支持容器化部署
- 微服务友好:轻量级,适合微服务架构
生产特性
- 监控指标:内置Actuator监控
- 健康检查:应用健康状态检测
- 外部化配置:灵活的配置管理
1.3 Spring Boot与传统Spring的对比
特性 | 传统Spring | Spring Boot |
---|---|---|
配置方式 | XML配置文件 | 自动配置+注解 |
依赖管理 | 手动管理版本 | Starter统一管理 |
服务器 | 外部Tomcat | 内嵌服务器 |
部署方式 | WAR包部署 | JAR包运行 |
开发效率 | 配置繁琐 | 开箱即用 |
1.4 Spring Boot核心注解
@SpringBootApplication
这是Spring Boot的核心注解,它是一个组合注解,包含:
@SpringBootConfiguration // 标识为配置类
@EnableAutoConfiguration // 启用自动配置
@ComponentScan // 组件扫描
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
常用注解说明
@RestController
- 组合了@Controller和@ResponseBody
- 用于创建RESTful Web服务
@RequestMapping
- 映射HTTP请求到处理方法
- 可以指定请求方法、路径等
@Autowired
- 自动装配Bean
- 可以用在字段、方法、构造器上
@Service、@Repository、@Component
- 标识不同层的组件
- 用于自动扫描和注册Bean
1.5 Spring Boot的工作原理
启动流程
创建SpringApplication实例
SpringApplication app = new SpringApplication(Application.class);
- 运行SpringApplication
java app.run(args);
- 运行SpringApplication
自动配置生效
- 扫描类路径下的jar包
- 根据条件注解决定是否生效
- 创建和配置Bean
自动配置原理
@ConditionalOnClass(DataSource.class)
@ConditionalOnMissingBean(DataSource.class)
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceAutoConfiguration {
@Bean
@ConditionalOnProperty(name = "spring.datasource.url")
public DataSource dataSource(DataSourceProperties properties) {
return DataSourceBuilder.create()
.url(properties.getUrl())
.username(properties.getUsername())
.password(properties.getPassword())
.build();
}
}
条件注解
- @ConditionalOnClass:类路径存在指定类时生效
- @ConditionalOnMissingBean:容器中不存在指定Bean时生效
- @ConditionalOnProperty:配置文件中存在指定属性时生效
- @ConditionalOnWebApplication:Web应用时生效
1.6 Spring Boot项目结构
标准项目结构
src/
├── main/
│ ├── java/
│ │ └── com/example/demo/
│ │ ├── DemoApplication.java # 启动类
│ │ ├── controller/ # 控制器层
│ │ ├── service/ # 服务层
│ │ ├── repository/ # 数据访问层
│ │ ├── entity/ # 实体类
│ │ └── config/ # 配置类
│ └── resources/
│ ├── application.yml # 配置文件
│ ├── static/ # 静态资源
│ └── templates/ # 模板文件
└── test/
└── java/
└── com/example/demo/
└── DemoApplicationTests.java # 测试类
配置文件
Spring Boot支持多种配置文件格式:
application.properties
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=123456
application.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/demo
username: root
password: 123456
1.7 Spring Boot Starter
常用Starter
Starter | 功能 |
---|---|
spring-boot-starter-web | Web开发 |
spring-boot-starter-data-jpa | JPA数据访问 |
spring-boot-starter-data-redis | Redis缓存 |
spring-boot-starter-security | 安全框架 |
spring-boot-starter-test | 测试框架 |
spring-boot-starter-actuator | 监控和管理 |
自定义Starter
创建自定义Starter的步骤:
创建自动配置类
@Configuration @ConditionalOnClass(MyService.class) @EnableConfigurationProperties(MyProperties.class) public class MyAutoConfiguration { @Bean @ConditionalOnMissingBean public MyService myService(MyProperties properties) { return new MyService(properties); } }
- 创建配置属性类
java @ConfigurationProperties(prefix = "my.service") public class MyProperties { private String name = "default"; private int timeout = 30; // getters and setters }
- 创建配置属性类
创建spring.factories文件
# META-INF/spring.factories org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.example.MyAutoConfiguration
1.8 Spring Boot的生态系统
Spring Cloud
微服务开发工具集
服务发现、配置管理、断路器等
Spring Data
数据访问抽象
支持JPA、MongoDB、Redis等
Spring Security
安全框架
认证、授权、防护等
Spring Batch
批处理框架
大数据量处理
1.9 版本选择和兼容性
版本命名规则
主版本号:重大架构变更
次版本号:新功能添加
修订版本号:Bug修复
LTS版本
Spring Boot 2.7.x(LTS)
Spring Boot 3.x(最新)
Java版本兼容性
Spring Boot版本 Java版本 2.x Java 8+ 3.x Java 17+ 1.10 学习路径建议
基础阶段
Spring框架基础
Maven/Gradle构建工具
Spring Boot核心概念
进阶阶段
Spring Boot Web开发
数据访问和持久化
安全和认证
高级阶段
微服务架构
云原生开发
性能优化和监控
总结
Spring Boot通过约定优于配置的理念,大大简化了Spring应用的开发。它提供了自动配置、起步依赖、内嵌服务器等特性,让开发者能够快速构建生产级别的应用。 在接下来的章节中,我们将深入学习Spring Boot的各个方面,从环境搭建到实际项目开发,逐步掌握这个强大的框架。