@ResponseStatus gán HTTP status cho exception class hoặc controller method — khai báo tĩnh thay vì ResponseEntity.
Trên exception class:
java
@ResponseStatus(HttpStatus.NOT_FOUND) // → 404
class UserNotFoundException extends RuntimeException {}
@ResponseStatus(value = HttpStatus.CONFLICT, reason = "Email already registered") // → 409
class DuplicateEmailException extends RuntimeException {}Spring bắt exception → tự trả status đã khai.
Trên controller method:
java
@PostMapping @ResponseStatus(HttpStatus.CREATED) // → 201
User create(@RequestBody @Valid CreateUserRequest req) { return userService.create(req); }vs ResponseEntity: @ResponseStatus cho status cố định, đơn giản; ResponseEntity khi status động, cần header, body có thể null. Lưu ý: nếu có @ExceptionHandler trong @ControllerAdvice, @ResponseStatus trên exception bị bỏ qua — handler ưu tiên.