Learning Friday #4 – Spring Framework

K2Blog Senza categoriaLearning Friday #4 – Spring Framework

Altro venerdì, altro Learning Friday, altro argomento: Spring framework with Alessandro Accardo.

Durante il quarto Learning Friday il nostro Alessandro ci ha introdotti nel magico mondo di Spring, spiegandoci cos’è, come è strutturato e in cosa consiste, fino ad indicarci la direzione del progetto nel prossimo futuro.

Ma cominciamo dall’inizio. Oggi vi presentiamo quello che è considerato il re dei framework: Spring.

Spring è un framework open source concepito per lo sviluppo di applicazioni Java. Nasce per Java EE e la prima versione fu rilasciata da Rod Johnson nel 2002, il quale lo definì “Java EE done right”.

Ecco alcune delle caratteristiche che lo rendono così famoso e, come dice il nostro insegnante, “impossibile da non usare”:

  • Come già detto, è una risorsa open source, una sorgente aperta. Il che vuol dire in continuo sviluppo, poiché chiunque ha la licenza può favorirne lo studio, la modifica e l’implementazione.
  • Modulare, sin dalla nascita. Scopriremo successivamente i moduli “must have” e quelli più interessanti.
  • Permette lo sviluppo di ogni tipo di applicazione, non solo web application.

Grazie a questa struttura modulare è possibile utilizzarlo nella sua interezza o solo in parte, e ciò permette una facile integrazione anche con altri framework già esistenti.

E’ possibile, infatti, scegliere di integrare solo alcuni dei suoi moduli all’interno del nostro progetto. L’idea è che, qualunque sia il supporto di cui si ha bisogno, Spring può aiutarci a costruirlo senza cominciare sempre da capo.

La struttura modulare si suddivide in:

  • Moduli che forniscono le funzionalità fondamentali, questi sono i moduli core;
  • Moduli facoltativi, discrezionali, che spaziano dalla configurazione alla sicurezza.

Moduli Core: cerchiamo di darne una semplice panoramica.

 Iniziamo dal basso, la parte forse fondamentale: il modulo Test. È trasversale e strettamente necessario per far sì che un’applicazione funzioni. Non fare test è “pericoloso”, ci si potrebbe ritrovare ad avere problemi durante l’utilizzo.

  • Modulo Core Container: è il “contenitore centrale”. Include il modulo Bean, che fornisce le classe factory per l’istanziazione dei bean, il modulo Core, che implementa la dependency injection, il modulo Context, che fornisce l’accesso a tutti i bean definiti in funzione dei relativi contesti e il modulo SpEL, che fornisce il linguaggio di espressione per consultare e manipolare il grafo degli oggetti a runtime. Si avvale inoltre del modulo Test, che, come anticipato, si estende orizzontalmente per evitare “sorprese” durante l’utilizzo finale dell’applicazione. Il modulo Core Container dà la possibilità a Spring di costruire un contesto ed iniettare degli oggetti precostruiti all’interno di esso. (Prendo un oggetto, me lo costruisco io Spring e lo “inietto” in tutti gli attributi auto-wired. Matchando i nomi inietto gli oggetti che ho costruito. Tutti gli oggetti stanno da tutte le parti quando richiesti e questa è una potenzialità formidabile di Spring.)
  •  Aspect Oriented Programming (AOP), ossia la programmazione orientata agli aspetti. Il vantaggio che si ha rispetto alla programmazione orientata agli oggetti è che non si deve implementare separatamente il codice necessario in ogni classe di oggetti. Tutti gli elementi sono trasversali. (Se sono amministratore faccio una cosa, se non lo sono no; se sono amministratore vedo una cosa, se non lo sono no).

Gli Aspetti sono delle annotazioni che vengono applicate sul metodo o sulla classe di interesse, definendone l’aspetto, iniettando un pezzo di logica trasversale a tutta l’applicazione nel punto in cui il programmatore decide.

  • L’Instrumentation serve per capire cosa succede nell’applicazione quelle volte che non funziona.
  • Il Messaging serve per mandare/ricevere messaggi su un buffer.
  • Data Access/Integration. Gli altri moduli, gli altri componenti, sono l’integrazione con l’accesso ai dati.
  • WEB: riguarda tutta la parte front end (il back end del front end in realtà, come sottolinea il nostro docente del giorno).

Vi lasciamo con questa breve panoramica, presto, nella seconda parte dell’articolo, proseguiremo parlando della vera rivoluzione che si ha con Spring.