Spring Boot REST API — Clean Controllers & Validation

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.