一、Spring Boot核心优势速览
1. 传统Spring vs Spring Boot对比
特性 | Spring | Spring Boot |
---|---|---|
配置方式 | XML/Java Config | 自动配置 |
内嵌服务器 | 需手动部署 | Tomcat/Jetty内置 |
依赖管理 | 手动指定 | Starter POMs |
监控 | 需集成第三方 | Actuator内置 |
启动速度 | 较慢 | 秒级启动 |
二、5分钟极速开发实战
1. 创建项目(使用Spring Initializr)
- 访问 start.spring.io
- 选择配置:
- Project: Maven
- Language: Java
- Spring Boot: 3.0.5
- Dependencies: Spring Web, DevTools
- 点击Generate下载项目
2. 编写第一个REST控制器
java
@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public String sayHello(@RequestParam(required = false) String name) {
return "Hello, " + (name != null ? name : "Spring Boot");
}
@PostMapping("/users")
public User createUser(@RequestBody User user) {
return userService.save(user);
}
}
// 实体类
public record User(Long id, String name, String email) {}
3. 运行与测试
bash
mvn spring-boot:run
# 访问 http://localhost:8080/api/hello?name=CSDN
三、自动配置与进阶功能
1. 自动装配原理图解
启动类@SpringBootApplication @EnableAutoConfiguration 扫描META-INF/spring.factories 加载自动配置类 条件装配Bean
2. 常用Starter依赖说明
Starter | 功能 | 包含技术 |
---|---|---|
spring-boot-starter-web | Web开发 | Tomcat, Spring MVC |
spring-boot-starter-data-jpa | 数据库操作 | Hibernate, HikariCP |
spring-boot-starter-security | 安全认证 | Spring Security |
spring-boot-starter-test | 单元测试 | JUnit, Mockito |
四、数据库集成与REST API增强
1. 添加JPA与H2数据库
xml
<!-- pom.xml -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
2. 定义实体与Repository
java
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
private String name;
private String email;
// getters/setters
}
public interface UserRepository extends JpaRepository<User, Long> {}
3. 编写CRUD API
java
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserRepository repository;
@GetMapping
public List<User> getAllUsers() {
return repository.findAll();
}
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return repository.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
}
}
五、API文档生成(Swagger集成)
1. 添加OpenAPI依赖
xml
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
</dependency>
2. 访问文档界面
启动后访问:
六、生产级部署与监控
1. 打包与运行
bash
mvn clean package
java -jar target/demo-0.0.1-SNAPSHOT.jar
2. 健康检查与监控
bash
# 查看健康状态
curl http://localhost:8080/actuator/health
# 查看环境配置
curl http://localhost:8080/actuator/env
3. Docker化部署
dockerfile
FROM eclipse-temurin:17-jdk-alpine
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
七、常见问题与解决方案
1. 启动失败:端口冲突
properties
# application.properties
server.port=8081
2. 依赖冲突
bash
mvn dependency:tree > deps.txt # 分析依赖树
3. 热部署失效
properties
# 开启自动重启
spring.devtools.restart.enabled=true