Spring MVC handles HTTP requests through conversion, validation, controllers and response handling.
Learning roadmap
Read the contract, run the source-kit checks, and inspect a rejected input before extending the application. This subject covers Spring and Spring Boot together; Java language lessons remain in their own subject.
Prerequisites
Use Java object ownership, interfaces, exceptions and Maven builds before the framework-specific lessons.
Section lessons
- Spring MVC request validation: reject invalid commands before mutation
- Spring MVC ProblemDetail: stable errors without leaking internals
- Spring API pagination: bounded requests and immutable snapshots
- Spring MVC CORS: a browser-origin policy is not authentication
- Spring reactive foundations: request values and cancel a subscription
- Spring WebFlux SSE: emit bounded receipt events and test HTTP encoding
- Spring WebFlux cancellation: observe downstream cleanup without undoing work
- Spring MVC conditional GET: validate the representation tag
- Spring MVC consumes and produces: 415 and 406 are different failures
- Spring MVC nested validation: reject a bad line before the handler
- Spring If-Match writes: reject a stale receipt revision
- Spring POST idempotency keys: replay the same receipt result
- Spring retry and stale-write checks: choose the right HTTP contract
- Spring MVC validation paths: object constraints and method parameters
- Spring MVC validation errors: one public ProblemDetail for two failure paths
- Spring POST idempotency keys: bind replay to tenant and command
- Spring MVC multipart receipt import: validate before storing
- Spring multipart size limits: enforce parser and application budgets
- Spring CSV uploads: reject malformed UTF-8 and an unknown header
- Spring RestClient request factories: pin the transport you test
- Spring HTTP client timeouts: bound the call inside the request deadline
- Spring HTTP retries: only replay a command with a defined identity
- Spring RestClient transport: run the factory you configured
- Spring RestClient 503 response: count attempts before adding a retry
- Spring RestClient read timeout: reject a server that accepts but stalls
- Spring HTTP timeout after POST: the write may already exist
- Spring HTTP replay key: two requests, one modeled reservation
Continue learning
Boot Foundations, Spring Core, Data & Transactions, Security, Testing, Production, Exercises, Quizzes, Projects.
Trace an HTTP request
- Spring MVC request lifecycle: from servlet filter to response body
- Spring Filter versus HandlerInterceptor: choose the right request boundary
WebSocket messaging boundaries
New checked lessons
New checked lessons
- Spring MVC mapping params: route a format choice before the handler runs
- Spring MVC exception handlers: a controller-local handler wins before global advice
- Spring @RestControllerAdvice selector: apply an error policy to one controller family
GraphQL schema and error decisions
- Spring GraphQL schema nullability: trace one field failure through the response
- Spring GraphQL errors: distinguish validation, resolver failure and nullable data
Spring AI boundary lessons
Proxy trust boundary
GraphQL relation batching
Gateway, WebSocket and HTTP client boundaries
- Spring Cloud Gateway filter order: pre and post phases reverse
- Spring Cloud Gateway retry: idempotency, buffered bodies and the byte budget
- Spring STOMP slow clients: send buffer and message-size limits
- Spring STOMP simple broker versus relay: the multi-instance boundary
- Spring HTTP service client: the interface is a contract, not a transport policy
- Spring HTTP service client retries: an interface cannot prove the server did not commit
Remote boundaries and recovery
- Spring Cloud Gateway circuit breaker: a fallback is an API response contract
- Spring STOMP broker relay: credentials and broker availability are separate from user identity
- Spring WebSocket reconnect: recover state after an unobserved gap
- Spring HTTP service groups: configure one host policy for several interfaces
- Spring WebClient exchangeToMono: decode the response inside its callback
- Reactive HTTP service client: the proxy returns a publisher, not a completed call
Web runtime contracts
- Spring MVC async executor: bound Callable work before requests pile up
- Spring MVC streaming response: stop work when the client disconnects
- Spring WebFlux codec memory budget: distinguish aggregation from streaming
- Spring WebClient status-specific decoding: consume one branch and close the rest
HTTP delivery and client boundaries
- Spring MVC private Cache-Control: decide who may retain a receipt
- Spring MVC byte ranges: resume an authorized receipt download
- Spring MVC Content-Disposition: produce a safe attachment filename
- Spring MVC versioned static assets: cache immutable bytes by content
- Spring WebClient attributes versus Reactor Context: choose the right request scope
- Spring WebClient request audit: log route identity without payload leakage
- Spring STOMP authorization: separate SEND from SUBSCRIBE permissions
