11.07.2014 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!