Spring Boot
Spring Boot是Spring框架的一个扩展,它简化了基于Spring的应用程序的初始搭建和开发过程。它采用了"约定优于配置"的理念,提供了大量自动配置功能,让开发者能够快速启动和运行项目。
1、Spring Boot核心特性
- 自动配置:根据项目依赖自动配置Spring应用
- 起步依赖:简化依赖管理,提供功能性的依赖分组
- 命令行界面:支持使用Groovy脚本进行开发
- Actuator:提供生产级特性如健康检查、指标收集等
- 嵌入式服务器:无需部署WAR文件,内置Tomcat、Jetty或Undertow
2、Spring Boot 核心注解
@SpringBootApplication:组合注解,包含@Configuration、@EnableAutoConfiguration和@ComponentScan@RestController:组合@Controller和@ResponseBody,用于创建RESTful服务@RequestMapping:映射web请求到特定处理类或方法@Autowired:自动注入依赖@Service、@Repository、@Component:标识不同层次的组件
3、核心设计理念
- 自动配置(Auto-configuration): 根据项目依赖自动配置Spring应用
- 起步依赖(Starter Dependencies): 提供一系列预定义的依赖描述符
- 命令行界面(CLI): 支持使用Groovy脚本快速开发
- Actuator: 提供生产级监控和管理功能
4、核心组件
- Spring Boot Starter: 依赖管理的基础单元
- Spring Boot Autoconfigure: 实现自动配置的核心
- Spring Boot CLI: 命令行工具
- Spring Boot Actuator: 应用监控和管理
- Spring Boot Test: 测试支持
5、Spring Boot 的优点
1. 快速开发
- 内置Tomcat、Jetty等Servlet容器,无需部署WAR文件
- 提供大量starter简化Maven/Gradle配置
- 自动配置Spring和第三方库
2. 简化配置
- 零XML配置(也可混合使用)
- 合理的默认配置
- 外部化配置支持(properties/YAML)
3. 生产就绪
- 健康检查、指标收集、审计
- 外部化配置
- 灵活的日志配置
4. 微服务友好
- 轻松创建独立运行的JAR
- 与Spring Cloud无缝集成
- 服务发现、熔断器等支持
5. 强大的生态系统
- 与Spring Data、Spring Security等无缝集成
- 丰富的社区支持
- 大量第三方库适配
6、Spring Boot 的应用场景
1. 微服务架构
Spring Boot是构建微服务的理想选择,因为:
- 每个服务可以独立打包部署
- 轻量级启动
- 与Spring Cloud完美配合
2. RESTful API开发
- 内置Jackson支持JSON处理
- 简化Controller开发
- 轻松实现HATEOAS
3. 快速原型开发
- 通过Spring Initializr快速生成项目骨架
- 内嵌数据库支持(H2, Derby等)
- 热部署支持
4. 批处理应用
- 与Spring Batch集成
- 调度任务支持(@Scheduled)
- 命令行运行器支持
5. 企业应用集成
- JPA/Hibernate/MyBatis支持
- 消息队列集成(RabbitMQ, Kafka)
- 安全控制(Spring Security)
7、简易的SpringBoot项目结构
java
src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ └── demo/
│ │ ├── DemoApplication.java # 主启动类
│ │ ├── controller/
│ │ │ └── HelloController.java # 控制器
│ │ └── service/
│ │ └── HelloService.java # 服务层
│ └── resources/
│ ├── application.properties # 配置文件
│ └── static/ # 静态资源
└── test/
└── java/
└── com/
└── example/
└── demo/
├── DemoApplicationTests.java # 基础测试类
├── controller/
│ └── HelloControllerTest.java
└── service/
└── HelloServiceTest.java