Che cos'è Java Spring Boot?
Introduzione a Spring Boot - Strumento basato su Java molto apprezzato per lo sviluppo di app Web e microservizi

Che cos'è Spring Boot?
Java Spring Boot è uno strumento open source che semplifica l'uso di framework basati su Java per creare microservizi e app Web. Per una qualsiasi definizione di Spring Boot, bisogna partire da Java, uno dei linguaggi di sviluppo più diffusi e usati e una delle piattaforme di computing più apprezzate per lo sviluppo di app. Gli sviluppatori di tutto il mondo iniziano il percorso di scrittura di codice imparando a usare Java. Flessibile e intuitivo, Java è preferito dagli sviluppatori per diverse app, da app per social media, Web e giochi ad applicazioni di rete e aziendali.
Java e il framework Spring
Benché Java sia facile da usare e più facile da imparare rispetto ad altri linguaggi, il livello di complessità necessario per creare, eseguire il debug e distribuire app Java è ora altissimo. Questo problema è dovuto al numero esponenziale di variabili che gli sviluppatori moderni devono gestire quando sviluppano app Web o app per dispositivi mobili per tecnologie moderne comuni, tra cui streaming di musica o app di pagamento per dispositivi mobili. Uno sviluppatore che scrive un'app line-of-business di base deve ora gestire più librerie, plug-in, registrazione di errori e gestione di librerie, integrazioni con i servizi Web e più linguaggi, ad esempio C#, Java, HTML e altri ancora. È quindi comprensibile che la richiesta di strumenti che semplifichino lo sviluppo di app Java, consentendo agli sviluppatori di risparmiare tempo e denaro, sia elevata.
Questo è il momento dei framework applicazione, ovvero grandi blocchi di codice già scritto che gli sviluppatori possono usare e aggiungere al proprio codice in base alle esigenze specifiche. Questi framework alleggeriscono il carico degli sviluppatori per quasi tutte le esigenze, dallo sviluppo di app per dispositivi mobili e app Web all'uso di desktop e API. I framework rendono la creazione di app più rapida, facile e sicura offrendo codice riutilizzabile e strumenti utili per combinare i diversi elementi di un progetto di sviluppo software.
Ecco quando Spring risulta utile: Spring è un progetto open source che fornisce un approccio modulare semplificato per la creazione di app con Java. La famiglia di progetti Spring è iniziata nel 2003 come risposta alle complessità dello sviluppo Java iniziale e fornisce supporto per lo sviluppo di app Java. Il nome stesso, Spring, fa in genere riferimento al framework dell'applicazione o all'intero gruppo di progetti o moduli. Java Spring Boot è un modulo specifico, creato come estensione del framework Spring.
Sulla base di queste informazioni sull'interazione tra framework Spring, Spring Boot e Java, è possibile definire Spring Boot come lo strumento che semplifica e accelera lo sviluppo di app Web e microservizi entro il framework Java, Spring.
Poiché il linguaggio e/o la piattaforma è Java, viene a volte definito "Java Spring Boot", "framework Java Spring" o "framework Spring Boot". Poiché tuttavia sono disponibili altri framework di terze parti per Java, tra cui Play e Hibernate, risulta più accurato usare le definizioni "Spring" e "Spring Boot".
Per una descrizione generale dei concetti fondamentali di Java, vedi l'articolo Che cos'è Java?
Qual è la differenza tra Spring e Spring Boot?
Come indicato in precedenza, Spring è un framework app basato su Java e open source che comprende molti progetti più piccoli. Altri progetti Spring molto diffusi includono ad esempio Spring Data, Spring Cloud e Spring Security. Per comprendere la differenza tra Spring Boot e Spring, è importante capire che anche se esistono alcune differenze a livello di funzionalità di base, sono comunque parte della famiglia Spring.
Per comprendere appieno le differenze tra Spring e Spring Boot, sarà necessario definire prima di tutto alcuni termini essenziali.


Cosa sono i microservizi?
I microservizi sono un approccio all'architettura di sviluppo software. Con "micro" in microservizi si fa riferimento al codice distribuito in parti piccole e gestibili, o componenti, e ogni "servizio", o funzione di base, viene creato e sviluppato in modo indipendente dagli altri servizi. I componenti indipendenti interagiscono e comunicano tramite documenti API prestabiliti definiti contratti. La scala ridotta e il relativo isolamento di questi microservizi offrono molti vantaggi. Poiché questo tipo di architettura è distribuita e ad accoppiamento debole, ad esempio, l'app intera non si interrompe in caso di errore di un componente. Altri vantaggi sono costituiti da miglioramento della produttività, manutenzione più semplice, allineamento aziendale migliore e maggiore tolleranza di errore.
Che cos'è l'inserimento delle dipendenze?
L'inserimento delle dipendenze (DI, Dependency Injection) è una tecnica di progettazione usata per ottenere l'inversione del controllo (IoC). Nella programmazione orientata a oggetti come Java gli oggetti che dipendono da altri oggetti vengono definiti dipendenze. L'oggetto ricevente o dipendente viene in genere definito client e l'oggetto da cui il client dipende viene definito servizio. L'inserimento delle dipendenze passa quindi il servizio al client o "inserisce" la dipendenza usando codice definito injector. Grazie all'inserimento delle dipendenze, il client non deve specificare quale servizio usare: l'injector gestisce tale aspetto per il client.


Che cos'è l'approccio "Convention over configuration"?
L'approccio "Convention over configuration", a volte definito scrittura di codice in base a convenzioni, è un concetto usato nei framework di applicazioni per ridurre il numero di decisioni che uno sviluppatore deve prendere. Rispetta il principio DRY (Don't Repeat Yourself) per evitare di scrivere codice ridondante. La scrittura di codice basata su convenzioni mira a mantenere la flessibilità, consentendo al tempo stesso a uno sviluppatore di scrivere codice solo per gli aspetti non convenzionali dell'app che sta creando. Quando il comportamento dell'app corrisponde alle convenzioni stabilite, l'app verrà semplicemente eseguita per impostazione predefinita, senza che sia necessario scrivere file di configurazione. Lo sviluppatore dovrà scrivere esplicitamente i file di configurazione solo se il comportamento desiderato si discosta dalla "convenzione".
Confronto tra il framework Spring e Spring Boot
Poiché Spring Boot è basato sui vantaggi del framework Spring, non si tratta in realtà di decidere tra Spring e Spring Boot, ma di sfruttare i vantaggi di entrambi. Non si tratta di Spring contro Spring Boot; Spring e Spring Boot possono essere usati insieme:
Spring | Spring Boot | |
---|---|---|
Di cosa si tratta? | Framework applicazione Web open source basato su Java. | Un'estensione o un modulo basato sul framework Spring. |
Quali operazioni vengono eseguite? | Fornisce un ambiente flessibile e completamente configurabile usando strumenti e librerie di codice predefinito per creare app Web personalizzate e ad accoppiamento debole. | Consente di creare applicazioni Spring autonome che possono essere eseguite immediatamente senza necessità di annotazioni, configurazione XML o scrittura di una quantità elevata di codice aggiuntivo. |
Quando dovrei usarlo? |
Usa Spring quando vuoi:
|
Usa Spring Boot quando vuoi:
|
Qual è la funzionalità principale? | Inserimento delle dipendenze | Configurazione automatica |
Include server incorporati? | No. In Spring dovrai configurare esplicitamente i server. | Sì, Spring Boot include server HTTP predefiniti come Tomcat e Jetty. |
Come viene configurato? | Il framework Spring offre la flessibilità necessaria, ma la configurazione deve essere creata manualmente. | Spring Boot configura automaticamente Spring e altri framework di terze parti in base al principio predefinito "Convention over configuration". |
Devo sapere come usare XML? | In Spring sono necessarie conoscenze della configurazione XML. | Spring Boot non richiede alcuna configurazione XML. |
Sono disponibili strumenti dell'interfaccia della riga di comando per app di sviluppo/test? | Il solo framework Spring non fornisce gli strumenti dell'interfaccia della riga di comando necessari per lo sviluppo o il test di app. | In quanto modulo di Spring, Spring Boot include uno strumento dell'interfaccia della riga di comando per lo sviluppo e il test di app basate su Spring. |
Funziona da un approccio rigoroso o non rigoroso? | Non rigoroso* | Rigoroso* |
*Confronto tra approccio rigoroso e non rigoroso per il framework
Benché il termine "rigoroso" possa sembrare vagamente negativo, sia l'approccio rigoroso di Spring Boot che il framework Spring framework non rigoroso offrono vantaggi specifici.
Approccio rigoroso
Un approccio rigoroso presuppone che esista un modo significativamente più facile rispetto a tutti gli altri. Per impostazione predefinita, il software limita i designer, invitandoli a lavorare in base alla modalità prevista.
Fornisce un percorso ben definito, una procedura consigliata ottimale per la maggior parte delle persone nella maggior parte delle situazioni. L'app viene scritta rispettando strettamente queste procedure consigliate e le convenzioni diffuse. Un approccio rigoroso semplifica significativamente la collaborazione e la richiesta di assistenza per un progetto di scrittura di codice. Gli altri sviluppatori con esperienza in tale framework possono contare sulla familiarità immediata con la nuova app e possono intervenire subito.
Approccio non rigoroso
Un approccio non rigoroso viene adottato se tutte le soluzioni richiedono circa lo stesso livello di impegno o complessità. Si basa sul presupposto che non esiste un unico approccio corretto per arrivare alla soluzione di un problema. Fornisce invece strumenti flessibili che possono essere usati per risolvere il problema in molti modi. I framework non rigorosi presentano il vantaggio di offrire molta flessibilità nello sviluppo e concedono maggiore controllo agli sviluppatori. Lo svantaggio principale di questo livello elevato di flessibilità consiste nel fatto che lo sviluppatore deve prendere più decisioni e potrebbe dover scrivere più codice perché il framework è così aperto e poco rigoroso.
Funzionalità e vantaggi di Spring Boot
La parte interessante è infine costituita dalle funzionalità di base che Java Spring Boot offre oltre al framework Spring. Spring Boot offre un approccio più semplice e rapido per impostare, configurare ed eseguire le app. Elimina la complessità della configurazione necessaria per creare la maggior parte delle app basate su Spring. Gli sviluppatori possono iniziare subito a usare Spring Boot senza dover imparare a usare il framework Spring sottostante.

Ecco in che modo le funzionalità di Spring Boot contribuiscono alla semplificazione delle attività di programmazione Java. Spring Boot offre alcune funzionalità principali, tra cui:
- Applicazioni autonome - Spring Boot consente di creare app non associate a una piattaforma specifica, che possono essere eseguite in locale su un dispositivo senza connessione Internet o altri servizi installati per consentirne il funzionamento.
- Server incorporati - Spring Boot ti permette di incorporare direttamente server quali Tomcat, Jetty o Undertow.
- Approccio rigoroso - Spring Boot semplifica le configurazioni di compilazione fornendo dipendenze di base rigorose.
- Configurazione automatica - Spring Boot configura automaticamente Spring e altre librerie di terze parti, quando possibile.
- Funzionalità pronte per la produzione - Spring Boot fornisce funzionalità pronte per la produzione, tra cui metriche, controlli di integrità e configurazione esternalizzata.
Vantaggi di Spring Boot
Spring Boot:
- Riduce il tempo necessario per lo sviluppo e incrementa la produttività - Spring Boot semplifica significativamente lo sviluppo di app basate su Spring con Java. Il rispettivo approccio rigoroso al framework Spring riduce il tempo dedicato a decisioni e attività ripetitive e libera tempo per concentrarsi sulla creazione e sui test delle app.
- Riduce la necessità di scrivere codice boilerplate, annotazioni e configurazione XML - Non è necessario che gli sviluppatori generino codice o configurino XML o addirittura imparino a usare il framework Spring, se non vogliono.
- Integra app nella famiglia di progetti Spring - Le app Spring Boot si integrano perfettamente con altri progetti nell'ecosistema del framework Spring, tra cui Spring Data, Spring Cloud, Spring Security, oltre ad altri servizi cloud attendibili, ad esempio Microsoft Azure Spring Cloud.
- Fornisce strumenti di sviluppo/test - Grazie allo strumento dell'interfaccia della riga di comando e i server HTTP incorporati di Spring Boot, la creazione di ambienti per lo sviluppo/test di app basate su Spring risulta molto semplice.
- Offre plug-in e strumenti per semplificare lo sviluppo - Spring Boot offre plug-in per consentire di lavorare con database in memoria, oltre ad altri strumenti di automazione della compilazione molto apprezzati, come Apache Maven.
Esercitazioni su Java Spring Boot
Se hai già esperienza di creazione di app con il framework Spring, ti risulterà probabilmente facile imparare a usare Spring Boot tramite esercitazioni, starter per i progetti e documentazione disponibili in questa sezione. Se però hai fretta di iniziare a usare Spring Boot ma non conosci ancora il framework, ci sono buone notizie: puoi apprendere i concetti relativi a Spring Boot e iniziare a usarlo prima di imparare a usare il framework Spring perché apprenderai molti dei concetti fondamentali del framework mentre lavori. Anche se questo approccio non ti consentirà di imparare tutto quello che occorre sapere sul framework, ti offrirà un vantaggio iniziale se decidi di imparare a usarlo in seguito.
Un altro vantaggio dell'apprendimento di Spring Boot, oltre a rendere molto più rapido ed efficiente lo sviluppo di app, consiste nel fatto che ti prepara a usare altre funzionalità Spring, ovvero Spring Data, Project Reactor e Spring Security.

Detto questo, ti risulterà più facile completare la prima esercitazione su Spring Boot se apprendi prima di tutto il funzionamento dei concetti di base di inserimento delle dipendenze e inversione del controllo nel framework Spring. Ecco una panoramica molto generale:
Inserimento delle dipendenze
- Basato su XML, ad esempio <beans/> e <namespace:*/>
- Basato su annotazione, ad esempio @Component, @Autowired, @Inject
- Basato su Java, ad esempio classi @Configuration classes, metodi @Bean
Inversione del controllo (IoC, Inversion of Control)
- ApplicationContext - Interfaccia radice che funge da contenitore IoC di Spring
- BeanFactory - Interfaccia per l'accesso al contenitore Spring
- Beans - Oggetti di cui è stata creata un'istanza e che sono stati assemblati e gestiti da ApplicationContext
Esercitazioni su Java Spring Boot per principianti
Dopo aver appreso i concetti fondamentali, se vuoi creare e distribuire app Spring Boot su larga scala, prova a usare il servizio Azure Spring Cloud completamente gestito di Microsoft e VMware. In alternativa, è possibile iniziare subito con questa esercitazione su come proteggere le app Spring Boot con certificati TLS/SSL.
Crea e proteggi un'app Java
Crea un'app Java con Spring Initializr usando lo starter di Spring Boot per Azure Active Directory (Azure AD).
Distribuisci la tua prima app in Azure Spring Cloud
Scopri come creare, effettuare il provisioning e monitorare una semplice app Spring Boot creata con Spring Initializr.
Crea un semplice microservizio di Spring Boot
Crea e distribuisci un microservizio semplice e quindi impara ad aggiungervi tecnologie di Spring Cloud.
Altri starter per Spring Boot
Aggiungi funzionalità di archiviazione, sicurezza, autenticazione e insieme di credenziali delle chiavi alle app Spring Boot.
Domande frequenti
-
Spring Boot è un framework Web Java basato su microservizi e open source offerto da Spring, particolarmente utile per i software engineer che sviluppano app Web e microservizi.
-
"Spring Boot in Java" è un altro modo per dire "Java Spring Boot": i due termini sono intercambiabili. Java è il linguaggio e la piattaforma, Spring è il framework dell'applicazione basato su Java e Spring Boot è un'estensione del framework Spring, con alcuni vantaggi aggiuntivi.
-
Spring Boot include le funzionalità del framework Spring generale, ma Spring Boot non richiede l'apprendimento di Spring. Uno sviluppatore può creare un'app in meno tempo perché gli attributi di Spring Boot sono configurati automaticamente e l'approccio rigoroso rimuove gran parte del codice boilerplate e della configurazione richiesti nello sviluppo e nella distribuzione di app Spring.
-
Sì, come indicato in precedenza, Spring Boot è particolarmente utile per un approccio di microservizi all'architettura di sviluppo software. I microservizi sono un modo popolare per creare team piccoli e autonomi in grado di funzionare in modo indipendente e per loro natura, i microservizi funzionano solo nel back-end.
-
Riduzione del tempo necessario per lo sviluppo, incremento della produttività e facilità d'uso sono solo alcuni dei vantaggi dello sviluppo delle app Spring Boot.
-
Nel sito Web di Spring sono disponibili molte esercitazioni, avvii rapidi e documentazione, oltre a introduzioni e documentazione di Spring Boot da Microsoft Azure. Se vuoi iniziare subito a distribuire app Spring Boot, completa il webinar, Accelerare le applicazioni Spring Boot sul cloud su larga scala.