**1. 设计目的**
- **Spring Framework**:是一个全面的企业级 Java 应用开发框架,提供了 IoC(控制反转)、AOP(面向切面编程)、事务管理、MVC 等核心功能。它的设计目标是简化企业级应用开发,消除样板代码。
- **Spring Boot**:是基于 Spring Framework 的工具,旨在简化 Spring 应用的初始搭建和开发过程。它通过**约定大于配置**(Convention Over Configuration)的原则,提供了自动配置和起步依赖(Starter Dependencies),大幅减少了开发人员需要编写的配置代码。
**2. 配置方式**
- **Spring Framework**:传统上需要大量 XML 配置或 Java 配置类来设置应用上下文、组件扫描、依赖注入等。例如:
@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
@Bean
public DataSource dataSource() {
// 配置数据源
}
}
- **Spring Boot**:采用自动配置,通过 `@SpringBootApplication` 注解和 `application.properties`/`application.yml` 文件进行极简配置。例如:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
配置文件只需指定关键属性(如数据库连接):
properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
**3. 起步依赖(Starter Dependencies)**
- **Spring Framework**:需要手动管理大量依赖,例如添加 Spring MVC、Hibernate、Security 等模块时,需逐个指定版本并处理依赖冲突。
- **Spring Boot**:通过起步依赖简化依赖管理,例如:
<!-- Maven 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
一个依赖即可自动引入 Web 开发所需的全部组件(Spring MVC、Tomcat、Jackson 等)。
**4. 内置服务器**
- **Spring Framework**:需要外部应用服务器(如 Tomcat、Jetty)来部署 Web 应用。
- **Spring Boot**:内置 Tomcat、Jetty 或 Undertow 等服务器,可通过 `java -jar` 直接运行独立应用,无需额外部署。
**5. 开发效率**
- **Spring Framework**:开发初期需要编写较多配置代码,适合需要高度定制化的复杂项目。
- **Spring Boot**:快速搭建原型和微服务,适合敏捷开发。例如,创建 REST API 只需几行代码:
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
}
**6. 监控与运维**
- **Spring Framework**:需要手动集成监控工具(如 Actuator、Prometheus)。
- **Spring Boot**:内置 Actuator 提供生产级特性(健康检查、指标监控、环境信息等),简化运维。
**总结**
| **特性** | **Spring Framework** | **Spring Boot** |
|-------------------------|------------------------------------------|------------------------------------------|
| **定位** | 全面的企业级开发框架 | 简化 Spring 应用开发的工具 |
| **配置复杂度** | 高(XML 或 Java 配置) | 低(自动配置 + 少量属性文件) |
| **依赖管理** | 手动管理多个依赖 | 起步依赖自动管理依赖树 |
| **部署方式** | 需要外部应用服务器 | 内置服务器,可独立运行(jar/war) |
| **适用场景** | 高度定制化的复杂项目 | 快速开发微服务、原型验证 |
**联系**
Spring Boot **基于** Spring Framework 构建,两者并无技术上的冲突。Spring Boot 是 Spring Framework 的**最佳实践**和**快速开发工具**,而 Spring Framework 则是 Spring Boot 的核心支撑。在实际项目中,两者通常结合使用。