Questo è un corso pratico su Spring Boot pensato per chi sta muovendo i primi passi: sviluppatori junior o chi, fino a ieri, lavorava assemblando plugin su WordPress e oggi deve fare i conti con concetti come endpoint, payload e REST API.
I tutorial in rete tendono ad oscillare tra due estremi: le tesi accademiche illeggibili e i video da cinque minuti che mostrano cosa fare senza mai spiegare perché. Questo corso cerca la via di mezzo: spiegare bene i concetti senza perdersi nella teoria astratta.
Il caso studio: un pronto soccorso
Il filo conduttore del corso è il gestionale per il pronto soccorso di un ospedale inventato. La scelta dell'ospedale non è casuale: serve a separare nettamente due piani fondamentali:
- Il Dominio: le business rules del pronto soccorso e la gestione dei pazienti.
- L'Infrastruttura (il "tubo"): il percorso che i dati compiono dai Controller al formato JSON.
Spring Boot vive nel tubo: è lo strumento con cui far viaggiare i dati, non la ragione per cui il software esiste. Capitolo dopo capitolo, il progetto cresce aprendo uno sportello architetturale in più.
Il metodo di lavoro
Si parte da zero: un progetto appena generato su Spring Initializr e il suo primo errore 404. Il principio guida è toccare solo ciò che serve per capire il passo successivo:
- Niente database all'inizio: una semplice lista in memoria è più che sufficiente per osservare come un'API riceva ed elabori le richieste HTTP.
- Gli errori veri come strumento didattico: di fronte a un 400, 415 o 500, analizziamo il messaggio generato da Spring e la causa esatta che l'ha scatenato.
- Trasparenza: dove il codice serve solo a scopo didattico, viene detto chiaramente.
Come seguire la serie
I capitoli vanno letti in ordine, poiché ciascun passaggio si innesta sul codice sviluppato nel capitolo precedente. Se ti manca il vocabolario di base, il Capitolo 0 sulle REST API è il punto di partenza ideale per riallineare i concetti.
La serie è attualmente in corso. Il prossimo capitolo sarà dedicato al livello di Repository: la lista in memoria lascerà finalmente il posto a un database vero e proprio.
I capitoli
Il percorso del corso
- 0
REST API spiegate semplici (senza muri di teoria)
Prima di iniziare · 7 min
Mette in fila il vocabolario che i colloqui di lavoro danno spesso per scontato. Ripercorre l'evoluzione dal vecchio modello monolitico (che restituiva pagine HTML già pronte) fino all'era delle Single Page Application e delle app mobile, che richiedono unicamente dati grezzi. Argomenti chiave: risorse e convenzioni degli URL; verbi HTTP (GET, POST, PUT, PATCH, DELETE); status code fondamentali (200, 404, 500); formato JSON e disaccoppiamento; business logic, Separation of Concerns e perché l'architettura stateless scala meglio delle sessioni server.
- 1
Capitolo 1 · 8 min
Avvii il progetto, apri localhost:8080 e trovi una schermata di errore 404: hai rotto qualcosa? No, e capire il perché è il modo più rapido per comprendere l'architettura di un controller. Argomenti chiave: struttura dei tre file base (@SpringBootApplication, pom.xml, application.properties); creazione del primo endpoint con @RestController, @RequestMapping e @GetMapping; flusso della richiesta HTTP dal browser a Tomcat, passando per la DispatcherServlet fino al metodo Java; lettura e classificazione delle cinque famiglie di status code HTTP.
- 2
Rotte, verbi HTTP e parametri: Come gestire GET, POST, @PathVariable e @RequestParam nel Controller
Capitolo 2 · 8 min
Come comunicare al server quale paziente si vuole cercare o registrare. Analisi del comportamento di GET e POST attraverso la metafora della cartolina e della lettera. Argomenti chiave: passaggio dei dati nell'URL via @PathVariable (segmenti di percorso) e @RequestParam (query string, inclusi parametri opzionali con required = false); gestione degli errori frequenti (es. 400 Bad Request per parametri mancanti o tipi errati); concetto di endpoint come coppia verbo + indirizzo e risoluzione dell'errore di Ambiguous mapping; utilizzo di Postman e cURL per simulare le richieste POST.
- 3
Capitolo 3 · 8 min
Restituire un oggetto Java e vederlo trasformato in JSON senza scrivere una singola riga di parsing: analisi del meccanismo di serializzazione e deserializzazione di Spring Boot. Argomenti chiave: la classe modello Paziente e l'integrazione con Jackson; mapping bidirezionale tra liste Java e array JSON; ricezione di payload nel body della richiesta tramite @RequestBody con metodo eco di verifica; diagnosi degli errori 400 Bad Request e 415 Unsupported Media Type (mancanza dell'header Content-Type: application/json); l'importanza della validazione e i rischi dei dati non verificati.
- 4
Capitolo 4 · 8 min
Progettazione di un'interfaccia CRUD completa su una lista di pazienti in memoria, senza la complessità di un database reale. Argomenti chiave: transizione da URL orientati all'azione (/list, /insert) a URL REST con sostantivi al plurale (/pazienti); gestione delle operazioni di lettura (elenco e dettaglio) e inserimento; analisi dell'errore 500 causato dall'omissione di @PathVariable; scelta dei tipi di dato (Integer vs int per la gestione dei valori nulli) e simulazione dell'auto-incremento degli ID; identificazione del problema di coesione: perché un controller non dovrebbe svolgere tre ruoli diversi.
- 5
Alleggerire il Controller: Come disaccoppiare la logica con Service e Dependency Injection
Capitolo 5 · 10 min
Un controller deve limitarsi a smistare il traffico HTTP, non a gestire la business logic. Migrazione della logica e dello stato dell'applicazione in un PazienteService. Argomenti chiave: distinzione tra layer di dominio e layer infrastrutturale; i limiti dell'istanziazione manuale con new (perdita dello stato condiviso ad ogni richiesta HTTP); la Dependency Injection e l'Inversion of Control (IoC) Container di Spring; gestione dei Bean Singleton tramite @Service; constructor injection vs @Autowired sui campi (field injection); risoluzione dei messaggi di errore all'avvio in caso di Bean non trovati dall'Application Context.

Dario Amato
Sviluppatore software
Informatico con 15 anni di esperienza nello sviluppo software, guidato da una forte curiosità per le nuove frontiere dell'AI e del Web Marketing.
