Spring Boot 统一异常处理实践

Spring Boot 统一异常处理实践

Java 异常体系设计得很完整,但用好它并不简单。本文讲业务异常的设计原则。

先搭一个最小接口

以 Spring Boot 为例,一个接口最好保持分层清楚:

@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;

public UserController(UserService userService) {
this.userService = userService;
}

@GetMapping("/{id}")
public UserDTO detail(@PathVariable Long id) {
return userService.detail(id);
}
}

Controller 只负责接收请求和返回结果,业务逻辑放到 Service。这样代码更容易测试,也更容易维护。

配置和验证

如果涉及环境配置,建议拆分:

spring:
profiles:
active: dev

server:
port: 8080

生产环境启动时不要手工改文件,可以通过参数指定:

java -jar app.jar --spring.profiles.active=prod

接口写完后,用 curl 验证:

curl http://localhost:8080/users/1

常见坑

  • 事务方法必须通过 Spring 代理调用,类内部直接调用可能导致事务不生效。
  • Controller 不要返回 Entity,避免数据库字段直接暴露。
  • 参数校验和异常处理最好统一做,不要散落在每个接口里。

   转载规则


《Spring Boot 统一异常处理实践》 小乐 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录