Questa rapida guida di Codemotion su Spring offre spunti e concetti chiave per comprendere e iniziare con questo framework popolare.
Una breve storia di Spring
Oggi, il Framework Spring è uno standard de facto. Centinaia di migliaia di sviluppatori in tutto il mondo lo utilizzano con grande successo.
Spring è uno strumento open source creato nel 2003 per superare una grave lacuna nello standard ufficiale e offrire una soluzione reale di contenitore di componenti leggeri. Nel ottobre 2002, è stato pubblicato il libro di Rod Johnson “Expert One-on-One J2EE Design and Development”, che ha discusso lo stato attuale dello sviluppo di applicazioni enterprise in Java e ha evidenziato diverse gravi carenze di Java EE e del framework dei componenti EJB.
Johnson ha suggerito una soluzione più semplice focalizzata su classi Java ordinarie e sull’iniezione delle dipendenze. Tuttavia, sebbene alcuni considerino Java EE e Spring come rivali, Spring è un framework modulare per il backend che dovrebbe essere visto come complementare a Java EE.
Dal suo inizio, Spring continua a innovare ed evolversi con una comunità attiva che offre feedback continuo.
Struttura modulare
Il framework Spring contiene 20 moduli, tra cui Core, Beans, Context, Expression Language, AOP, Aspects, Instrumentation, JDBC, ORM, OXM, JMS, Transaction, Web, Servlet e Struts.
Modularità per la progettazione di applicazioni Java EE
Il framework modulare di Spring gli conferisce una certa facilità per la progettazione e la creazione di applicazioni Java EE. Oggi integra implementazioni di altre tecnologie come “.NET” o Python.
I moduli di base di Spring (per lo sviluppo di applicazioni Java EE) sono 20 in totale e l’efficacia di Spring rispetto ad altri framework Java è dovuta al fatto che utilizza Beans (semplici POJO, non sono JavaBeans), file di configurazione (file XML) e annotazioni (dalla versione 2.0, le annotazioni di Spring sono state rafforzate dalla versione 2.5).
Il Core Container
Il Core Container è composto dai moduli Core stessi, Beans, Context ed EL (Expression Language):
- Spring contiene 20 moduli: Core, Beans, Context, Expression Language, AOP, Aspects, Instrumentation, JDBC, ORM, OXM, JMS, Transaction, Web, Servlet e Struts, tra gli altri.
- Il modulo Core fornisce le funzionalità di base del framework oltre a IoC (Inversione di Controllo) e all’iniezione delle dipendenze.
- Il modulo Beans offre l’interfaccia BeanFactory che consente l’implementazione del pattern Factory Method.
- Il modulo Context si basa sulla solida base fornita dai moduli Core e Beans ed è un modo per accedere agli oggetti definiti e configurati all’interno di un’applicazione sviluppata con Spring. L’interfaccia ApplicationContext è il punto focale del modulo Context.
- Il modulo SpEL (Spring Expression Language) fornisce un potente linguaggio di espressione (derivato da EL) che consente di manipolare gli oggetti a tempo di esecuzione in un’applicazione Spring.
- Il Framework Spring utilizza diverse pratiche di programmazione comprovate come IoC (Inversione di Controllo) e design pattern come il pattern Factory e il pattern Singleton, per citarne solo due. Con il pattern Factory, Spring fornisce due tipi di implementazione del contenitore IoC utilizzando le interfacce BeanFactory e ApplicationContext. L’interfaccia ApplicationContext deriva dall’interfaccia BeanFactory, mantenendo la loro compatibilità e rendendo i file di configurazione dei bean di entrambe le implementazioni identici.
Lettura consigliata: La migliore libreria per la manipolazione dei colori in JavaScript
Spring MVC vs Spring Boot
Spring MVC è principalmente utilizzato per lo sviluppo di applicazioni web, mentre Spring è un framework backend che richiede configurazioni personalizzate. D’altra parte, Spring Boot è pronto all’uso.
Spring Boot semplifica la vita
Spring Boot semplifica notevolmente lo sviluppo di applicazioni Spring. Si basa su tutte le funzionalità predefinite di Spring e consente di gestire tutte le funzioni di qualsiasi applicazione Java. A seconda della complessità e della configurazione, Spring Boot può essere di grande aiuto nel ridurre la complessità delle configurazioni Spring.
In poche parole, Spring Boot rappresenta un’estensione del framework Spring, che include le configurazioni standard necessarie per l’avvio di un’applicazione Spring.
Caratteristiche chiave di Spring Boot
Ecco alcune delle caratteristiche chiave di Spring Boot:
Starter per semplificare la configurazione
Spring Boot offre dipendenze simili a starter che semplificano notevolmente la creazione e la configurazione dell’applicazione.
Server integrato
Spring Boot include un server integrato, eliminando la complessità della distribuzione delle applicazioni.
Metriche, verifica e configurazione esternalizzate
Spring Boot fornisce una serie di strumenti per la gestione delle metriche, la verifica e la configurazione, il che facilita notevolmente la manutenzione dell’applicazione.
Auto Setup
Spring Boot offre funzionalità di auto-configurazione, riducendo il carico di lavoro per gli sviluppatori.
Inversione di controllo (IoC)
L’Inversione di Controllo (IoC) è un principio di progettazione fondamentale di Spring. Il framework Spring IoC è completo e complesso e si basa su tre elementi chiave:
- Configurazione tramite file XML per collegare le implementazioni alle interfacce.
- Le classi sono considerate bean e quindi hanno getter e setter per i campi da iniettare.
- L’iniezione avviene tramite un file di configurazione, di default ApplicationContext.xml, da Spring.
Programmazione orientata agli aspetti (AOP)
Come framework modulare, Spring supporta l’implementazione della programmazione orientata agli aspetti (AOP). In AOP, è possibile utilizzare concetti come i Consigli e i Punti di Taglio per separare il codice aziendale dal codice tecnico relativo a questioni trasversali.
Transazioni dei dati
Spring Transaction è il modulo specifico responsabile dell’integrazione delle transazioni e offre diversi vantaggi:
- Fornisce un’astrazione sulle diverse soluzioni disponibili nel mondo Java per la gestione delle transazioni.
- Si basa sulla programmazione orientata agli aspetti (AOP) per gestire la demarcazione delle transazioni nel codice dell’applicazione.
- Consente la gestione dichiarativa delle transazioni.
Concetto di Transazione
La nozione di transazione è fondamentale nei sistemi informativi e nei database relazionali (RDBMS) come Oracle, MySQL e PostgreSQL. Una transazione è definita da quattro proprietà, rappresentate dall’acronimo ACID:
- Atomicità: una transazione garantisce che tutte le operazioni al suo interno vengano eseguite con successo o che nessuna di esse venga mantenuta.
- Coerenza: la transazione garantisce che sposti il sistema da uno stato valido a un altro stato valido.
- Isolamento: due transazioni sono isolate l’una dall’altra, producendo lo stesso risultato indipendentemente dall’ordine di esecuzione.
- Durabilità: la transazione garantisce che le modifiche apportate al sistema siano conservate in modo permanente.
Le transazioni vengono demarcate all’interno del codice dell’applicazione per definire quali operazioni debbano essere eseguite all’interno di una transazione.
Primi passi con Spring
Esistono numerose risorse per aiutarti a familiarizzare con il framework. Due libri che ti permetteranno di comprendere la potenza di Spring sono “Spring in Action” di Craig Walls e “Spring Recipes” di Gary Mak e altri.
Spring è facile da apprendere perché l’intero framework modulare è progettato per funzionare con POJO (Plain Old Java Objects), senza dipendere da interfacce speciali, classi astratte o simili. Gli sviluppatori possono scrivere software come normali applicazioni Java: interfacce, classi ed enumerazioni e utilizzare Spring per collegare i componenti, senza dover fare straordinari sforzi per realizzare la connessione.