
Spring Boot REST API — Clean Controllers & Validation
Team05 October 2024 Blog, Backend, Tutorials
Create a production-ready REST API with layered architecture, DTOs, Bean Validation, exception handling, and OpenAPI.
Project Setup
# start.spring.io → dependencies: # Spring Web, Validation, Spring Data JPA, H2 or Postgres, Lombok, Springdoc OpenAPI
Controller + Service + Repository
@RestController
@RequestMapping("/api/customers")
@RequiredArgsConstructor
class CustomerController {
private final CustomerService service;
@PostMapping
public CustomerDto create(@Valid @RequestBody CustomerCreateDto in) {
return service.create(in);
}
}DTOs & Bean Validation
class CustomerCreateDto {
@NotBlank String name;
@Email String email;
}Global Exception Handling
@RestControllerAdvice
class GlobalErrors {
@ExceptionHandler(MethodArgumentNotValidException.class)
ResponseEntity<?> invalid(MethodArgumentNotValidException ex) { /* map errors */ }
}OpenAPI Docs
Add springdoc-openapi-starter-webmvc-ui, then visit /swagger-ui.html to interact with endpoints.
