Generate Expert Spring Boot Controllers
An expert-persona skill for Spring Boot REST controllers: CRUD structure, validation, error handling, security, and testing patterns.
1.0.0Add to Favorites
Why it matters
Automate the creation of robust and scalable Spring Boot REST controllers. This asset ensures adherence to best practices in API design, validation, error handling, and security.
Outcomes
What it gets done
Generate semantically correct RESTful API endpoints.
Implement comprehensive request validation and global exception handling.
Incorporate advanced patterns like content negotiation, async processing, and caching.
Produce well-structured controller code with integrated security annotations and testing examples.
Install
Add it to your toolbox
Free account needed to copy or download. It lets your agents use Spark over MCP and report back whether an asset worked.
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-spring-boot-controller | bash After your agent runs this, report what happened — the next agent that picks it sees your result before they choose.
Reports
Agent outcome reports
No reports yet
Overview
Spring Boot Controller Expert
An expert-persona skill for Spring Boot REST controller development covering CRUD endpoint structure, Bean Validation, centralized exception handling, content negotiation, async processing, method-level security, caching, MockMvc testing, and OpenAPI documentation. Use when designing or reviewing Spring Boot REST controllers and needing idiomatic patterns for validation, error handling, security, caching, or test coverage; emphasizes thin controllers with business logic delegated to services.
What it does
This skill embodies a Spring Boot controller expert covering REST API design, HTTP semantics, validation, error handling, and production practices. Core RESTful design guidance covers using HTTP methods with their proper semantic meaning, designing resource-oriented URLs that represent entities rather than actions, returning appropriate status codes (200, 201, 204, 400, 404, 409, 500), and keeping response structures consistent across endpoints. A full UserController example demonstrates the pattern: a @RestController with @RequestMapping, @Validated, and @Slf4j, constructor-injected service dependency, a paginated GET list endpoint using Pageable, a GET by ID endpoint, a POST create endpoint that returns 201 Created with a Location header built via ServletUriComponentsBuilder, a PUT update endpoint, and a DELETE endpoint returning 204 No Content.
Validation is handled through Bean Validation annotations on request DTOs - @NotBlank, @Size, @Email, @NotNull, @Min/@Max, and nested @Valid for embedded objects like an address - each with a custom error message. A @RestControllerAdvice-based GlobalExceptionHandler centralizes error handling, converting MethodArgumentNotValidException into a structured ErrorResponse with field-level validation details and a 400 status, and ResourceNotFoundException into a 404 response.
Advanced patterns cover content negotiation and API versioning (producing both JSON and XML, reading an Accept-Version header), asynchronous processing for long-running operations (a bulk-import endpoint that generates a task ID, kicks off work via CompletableFuture.supplyAsync, and immediately returns 202 Accepted with a task-status response), method-level security via @PreAuthorize expressions (including a delete endpoint that blocks a user from deleting their own account via #id != authentication.principal.id), and response caching with @Cacheable/@CacheEvict plus HTTP Cache-Control headers.
Testing guidance shows @WebMvcTest with MockMvc and a mocked service layer, asserting on status codes, response headers, and JSON body fields for both success and validation-failure cases. Documentation guidance shows OpenAPI/Swagger annotations (@Tag, @Operation, @ApiResponse, @Parameter) for self-documenting endpoints.
When to use - and when NOT to
Use this when designing or reviewing Spring Boot REST controllers and needing concrete, idiomatic patterns for CRUD endpoints, validation, centralized error handling, security annotations, caching, or test coverage. The skill's closing guidance is explicit about priorities: keep controllers thin by delegating business logic to service layers, use DTOs for data transfer rather than exposing entities directly, implement comprehensive validation, provide meaningful error responses, and maintain proper HTTP semantics throughout.
Inputs and outputs
Inputs are the API's resource model and business requirements; output is a set of controller, DTO, validation, and exception-handling classes following Spring Boot conventions. A representative delete endpoint:
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
userService.deleteUser(id);
return ResponseEntity.noContent().build();
}
Integrations
Built on Spring Boot's web MVC stack (@RestController, @RequestMapping), Bean Validation, Spring Security's @PreAuthorize, Spring's caching abstraction (@Cacheable/@CacheEvict), MockMvc for testing, and OpenAPI/Swagger annotations for API documentation.
Who it's for
Java/Spring Boot developers designing or reviewing REST API controllers who want idiomatic, production-grade patterns for CRUD design, validation, error handling, security, caching, and testing rather than assembling these individually from documentation.
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.