Tesi - Computer Engineering Group - Università degli studi di Parma
Tesi - Computer Engineering Group - Università degli studi di Parma
Tesi - Computer Engineering Group - Università degli studi di Parma
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Il framework Spring 44<br />
Tipicamente la classe dependency costituisce una interfaccia, per la quale sono<br />
fornite numerose implementazioni (sottoclassi), ciascuna delle quali realizza le<br />
funzionalità richieste in modo <strong>di</strong>fferente. Nel caso in cui fosse la stessa classe<br />
dependent a creare una opportuna istanza della classe dependency, si verrebbe a<br />
creare una forte <strong>di</strong>pendenza tra la classe dependent e l‟implementazione scelta per<br />
la classe dependency, rendendo l‟applicazione <strong>di</strong>fficilmente mo<strong>di</strong>ficabile.<br />
Il pattern DI specifica invece che la creazione dell‟istanza della classe<br />
dependency sia effettuata da una classe esterna e che la dependency sia quin<strong>di</strong><br />
iniettata nella classe dependent: questo elimina la <strong>di</strong>pendenza stretta tra la classe<br />
dependent e l‟istanza della classe dependency, permettendo facilmente <strong>di</strong><br />
mo<strong>di</strong>ficare, anche <strong>di</strong>namicamente, l‟implementazione scelta.<br />
3.3 Inversion of Control Container<br />
La componente fondamentale del framework Spring, come si è potuto capire dalle<br />
spiegazioni date in precedenza, è la funzionalità <strong>di</strong> Inversion of Control (IoC),<br />
realizzata attraverso un componente detto Inversion of Control container (IoC<br />
container). Un container IoC permette <strong>di</strong> configurare e gestire il ciclo <strong>di</strong> vita <strong>degli</strong><br />
oggetti Java che compongono l'applicazione: le interfacce BeanFactory e<br />
ApplicationContext realizzano tali funzionalità. Il framework Spring definisce<br />
come beans tutti gli oggetti che sono configurati e gestiti tramite un IoC container<br />
<strong>di</strong> Spring.<br />
Il principale vantaggio del framework Spring risiede nel fatto che tutti i beans<br />
che compongono la propria applicazione e le <strong>di</strong>pendenze tra <strong>di</strong> essi possono essere<br />
configurati tramite opportuni meta dati (configuration meta data), spesso espressi<br />
sotto forma <strong>di</strong> file XML. Infatti tramite la classe XMLBeanFactory è possibile<br />
configurare completamente la propria applicazione attraverso un file XML, il<br />
quale contiene le definizioni dei beans e la descrizione delle loro <strong>di</strong>pendenze: sarà<br />
compito del container istanziare gli opportuni oggetti Java che rappresentano i<br />
beans, configurarli e gestire il loro ciclo <strong>di</strong> vita. Ad ogni bean <strong>di</strong> Spring è inoltre<br />
associato uno scope: la definizione <strong>di</strong> un bean costituisce infatti solo una ricetta