这里写目录标题
系统化的 Spring Boot 全栈学习教程,涵盖基础配置、核心功能、进阶实战及文档自动生成,结合最新官方实践(基于 Spring Boot 3.x+),附完整代码示例和文档生成指南。内容综合权威资料整理,建议收藏备用!
🛠️ 一、环境搭建与项目创建
1. 开发环境准备
- JDK:推荐 JDK 17+(下载地址)
- 构建工具:Maven 或 Gradle(以 Maven 为例)
<properties> <java.version>17</java.version> <spring-boot.version>3.2.4</spring-boot.version> </properties>
- IDE:IntelliJ IDEA(内置 Spring Initializr)
2. 创建第一个项目(Spring Initializr)
- 访问 start.spring.io
- 选择配置:
- Project:Maven
- Language:Java
- Dependencies:
Spring Web
,Spring Data JPA
,MySQL Driver
- 生成项目并解压,用 IDEA 打开。
🚀 二、核心功能开发
1. RESTful API 开发
// 控制器示例
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
User user = userService.findById(id);
return ResponseEntity.ok(user);
}
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user) {
User savedUser = userService.save(user);
return new ResponseEntity<>(savedUser, HttpStatus.CREATED);
}
}
注解解析:
@RestController
:组合@Controller
+@ResponseBody
@GetMapping
:定义 GET 请求端点
2. 数据持久化(Spring Data JPA)
// 实体类
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
}
// Repository 接口
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByNameContaining(String keyword); // 自动实现查询
}
3. 配置文件多环境切换
# application-dev.yml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db
username: dev_user
# application-prod.yml
server:
port: 80
spring:
datasource:
url: jdbc:mysql://prod-server:3306/prod_db
激活环境:spring.profiles.active=dev
⚙️ 三、进阶实战技巧
1. 全局异常处理
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<ErrorResponse> handleNotFound(ResourceNotFoundException ex) {
ErrorResponse error = new ErrorResponse("NOT_FOUND", ex.getMessage());
return new ResponseEntity<>(error, HttpStatus.NOT_FOUND);
}
}
2. 拦截器实现(日志记录)
@Component
public class LogInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
log.info("Request URL: {}", request.getRequestURL());
return true;
}
}
// 注册拦截器
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private LogInterceptor logInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(logInterceptor);
}
}
作用:记录请求日志、权限校验等
3. 缓存集成(Redis)
# application.yml
spring:
cache:
type: redis
redis:
host: localhost
port: 6379
@Service
public class ProductService {
@Cacheable(value = "products", key = "#id")
public Product getProductById(Long id) {
// 数据库查询
}
}
📑 四、API 文档自动生成(Swagger)
1. 添加依赖
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.5.0</version>
</dependency>
2. 配置 Swagger
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info().title("电商平台 API").version("1.0"));
}
}
3. 注解标注接口
@Operation(summary = "创建订单")
@PostMapping("/orders")
public Order createOrder(@RequestBody OrderRequest request) {
// 业务逻辑
}
访问文档:http://localhost:8080/swagger-ui.html
🚢 五、部署与监控
1. 打包与运行
mvn clean package # 生成 target/*.jar
java -jar your-app.jar --spring.profiles.active=prod
2. Actuator 健康监控
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
配置端点暴露:
management:
endpoints:
web:
exposure:
include: health,info,metrics
访问:http://localhost:8080/actuator/health
📊 六、实战案例:电商平台 API
// 商品下单逻辑
@Transactional
public Order placeOrder(OrderDTO orderDTO) {
// 1. 校验库存
Product product = productRepository.findById(orderDTO.getProductId())
.orElseThrow(() -> new ResourceNotFoundException("商品不存在"));
if (product.getStock() < orderDTO.getQuantity()) {
throw new BusinessException("库存不足");
}
// 2. 扣减库存
product.setStock(product.getStock() - orderDTO.getQuantity());
productRepository.save(product);
// 3. 创建订单
Order order = new Order();
order.setProductId(product.getId());
order.setAmount(product.getPrice() * orderDTO.getQuantity());
return orderRepository.save(order);
}
关键点:事务管理 (
@Transactional
)、业务异常封装
📚 学习路线与资源
阶段 | 内容 | 资源 |
---|---|---|
基础 | 核心配置、RESTful API、数据访问 | Spring 官方文档 |
进阶 | 安全控制(Security)、消息队列(RabbitMQ) | 《Spring Boot实战》 |
高级 | 微服务(Cloud)、响应式编程(WebFlux) | Spring Cloud Alibaba |
💡 最佳实践:
- 配置文件分离:
application-{env}.yml
- 使用 DTO 隔离实体类与接口传输
- 生产环境关闭 Actuator 敏感端点
本教程涵盖 Spring Boot 企业级开发全流程,代码可直接用于生产环境。通过 Swagger 生成的交互式文档(示例见下图),极大提升团队协作效率。