La definizione di Spring più calzante è forse quella data dagli stessi autori, che lo definiscono:
«un framework open source nato con l'intento di gestire la complessità nello sviluppo di applicazioni enterprise.»
Questa definizione suscita alcuni interrogativi in chi conosce già il mondo Java e si avvicina a Spring per la prima volta, il primo tra i quali è: «perché imparare questo framework e preferirlo alla miriade di quelli già esistenti ed affermati?»
La domanda, che sulle prime può apparire banale, offre invece una chiave per illustrare in pieno i vantaggi offerti da Spring, che se pur sviluppato dopo molti altri framework si contraddistingue come uno dei migliori e completi.
La risposta a questa domanda in realtà non è semplice e in parte può essere riassunta nei punti seguenti:
- Spring è un framework "leggero" e grazie alla sua architettura estremamente modulare é possibile utilizzarlo nella sua interezza o solo in parte. L'adozione di Spring in un progetto è molto semplice, può avvenire in maniera incrementale e non ne sconvolge l'architettura esistente. Questa sua peculiarità ne permette anche una facile integrazione con altri framework esistenti, come ad esempio Struts.
- Spring è un lightweight container e si propone come alternativa/complemento a J2EE. A differenza di quest'ultimo, Spring propone un modello più semplice e leggero (soprattutto rispetto ad EJB) per lo sviluppo di entità di business. Tale semplicità è rafforzata dall'utilizzo di tecnologie come l'Inversion of Control e l'Aspect Oriented che danno maggiore spessore al framework e favoriscono la focalizzazione dello sviluppatore sulle logica applicativa essenziale.
- A differenza di molti framework che si concentrano maggiormente nel fornire soluzioni a problemi specifici, Spring mette a disposizione una serie completa di strumenti atti a gestire l'intera complessità di un progetto software. Analizzeremo in dettaglio gli strumenti offerti da questo framework, per ora è sufficiente affermare che Spring fornisce un approccio semplificato alla maggior parte dei problemi ricorrenti nello sviluppo software (accesso al database, gestione delle dipendenze, testing, etc.).
- Spring è un framework nato con la concezione che il codice di qualità debba essere facilmente testato. Questa filosofia fa sì che, con Spring, sia molto facile testare il codice e, grazie a questa peculiarità, il framework si è ritagliato uno spazio importante in quegli ambiti dove il testing è considerato parte fondamentale del progetto software.
Nel corso della guida avremo modo di rispondere meglio alla domanda posta e ad altri dubbi che sorgono ogni volta che ci si approccia a studiare un nuovo framework.