【Spring】系统化的 Spring Boot 全栈学习教程,涵盖基础配置、核心功能、进阶实战及文档自动生成
这里写目录标题
- 🛠️ **一、环境搭建与项目创建**
- 1. 开发环境准备
- 2. 创建第一个项目(Spring Initializr)
- 🚀 **二、核心功能开发**
- 1. RESTful API 开发
- 2. 数据持久化(Spring Data JPA)
- 3. 配置文件多环境切换
- ⚙️ **三、进阶实战技巧**
- 1. 全局异常处理
- 2. 拦截器实现(日志记录)
- 3. 缓存集成(Redis)
- 📑 **四、API 文档自动生成(Swagger)**
- 1. 添加依赖
- 2. 配置 Swagger
- 3. 注解标注接口
- 🚢 **五、部署与监控**
- 1. 打包与运行
- 2. Actuator 健康监控
- 📊 **六、实战案例:电商平台 API**
- 📚 **学习路线与资源**
系统化的 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);}@PostMappingpublic 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_dbusername: 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 {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {log.info("Request URL: {}", request.getRequestURL());return true;}
}// 注册拦截器
@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate LogInterceptor logInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(logInterceptor);}
}
作用:记录请求日志、权限校验等
3. 缓存集成(Redis)
# application.yml
spring:cache:type: redisredis:host: localhostport: 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 {@Beanpublic 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 生成的交互式文档(示例见下图),极大提升团队协作效率。