← Docs
Recipe

Spring Boot controller scaffold

A minimal REST controller blueprint with validation, error mapping, and service delegation — ready to drop into any Spring Boot 3.x project.

@RestController
@RequestMapping("/api/v1/items")
@Validated
public class ItemController {

    private final ItemService itemService;

    public ItemController(ItemService itemService) {
        this.itemService = itemService;
    }

    @GetMapping
    public ResponseEntity<List<ItemDto>> getAll() {
        return ResponseEntity.ok(itemService.findAll());
    }

    @GetMapping("/{id}")
    public ResponseEntity<ItemDto> getById(
            @PathVariable UUID id) {
        return ResponseEntity.ok(itemService.findById(id));
    }

    @PostMapping
    public ResponseEntity<ItemDto> create(
            @Valid @RequestBody CreateItemRequest req) {
        return ResponseEntity
                .status(HttpStatus.CREATED)
                .body(itemService.create(req));
    }

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<Map<String, String>> handleValidation(
            MethodArgumentNotValidException ex) {
        var errors = new HashMap<String, String>();
        ex.getBindingResult().getFieldErrors()
                .forEach(e -> errors.put(e.getField(),
                        e.getDefaultMessage()));
        return ResponseEntity.badRequest().body(errors);
    }
}

Prerequisites

  • Spring Boot 3.2+
  • spring-boot-starter-validation
  • Lombok (optional)

Next steps

  • Wire up ItemService
  • Add @ControllerAdvice for global errors
  • Write integration tests with MockMvc