2015-05-05 20 views

risposta

7

Java EE fornisce i meccanismi di iniezione che consentono ai nostri oggetti per ottenere i riferimenti alle risorse e altre dipendenze, senza dover istanziare direttamente (in modo esplicito con il ‘nuovo’ parola chiave). Dichiariamo semplicemente le risorse necessarie & altre dipendenze nelle nostre classi disegnando campi o metodi con annotazioni che denotano il punto di iniezione per il compilatore.

Il contenitore fornisce quindi le istanze necessarie in fase di esecuzione. Il vantaggio di Injection è che semplifica il nostro codice e lo disaccoppia dalle implementazioni delle sue dipendenze.

Entrambi i metodi facilitano il raggiungimento di Inversion Of Control.

Take a look at one of my article I wrote on this.

+0

Thnx per d spiegazione! L'articolo di Ur è stato davvero utile! –

17

Dal source: iniezione

Resource consente di iniettare qualsiasi risorsa disponibile nello spazio dei nomi JNDI in qualsiasi oggetto gestito dal contenitore, come ad esempio una servlet, un bean enterprise, o un gestito fagiolo. Ad esempio, è possibile utilizzare l'iniezione di risorse per iniettare origini dati, connettori o qualsiasi altra risorsa desiderata nello spazio dei nomi JNDI.

Dipendenza iniezione ci permette di trasformare classi Java regolari in oggetti gestiti e li iniettare in qualsiasi altro oggetto gestito (oggetti Quale sono gestite dal contenitore).

Differenza tra iniezione di risorse e iniezione di dipendenza Le differenze tra RI e DI sono elencate di seguito.

  1. iniezione di risorse, possono iniettare risorse JNDI direttamente mentre Dependency Injection non può.

  2. L'iniezione di dipendenza può iniettare classi regolari (bean gestito) direttamente mentre l'iniezione di risorse non può.

  3. L'iniezione di risorse viene risolta in base al nome della risorsa mentre l'iniiezione di dipendenza viene risolta per tipo.

  4. L'iniezione delle dipendenze è di tipo standard mentre Resource Injection no.

+1

E sia di aiuto per ottenere l'inversione del controllo .. – CKing

+3

È possibile utilizzare '@ Produces' per rendere l'iniezione di risorse Java EE ordinaria in un'iniezione di dipendenza" typesafe ". –

+2

Thnx per la spiegazione! –

3

Rahul Tripathi risposta è esatta e quella corretta.Ma per dirla in modo più sintetico che può aiutarti a decidere quale usare, tienilo in questo modo: DI viene in genere utilizzato per assegnare le classi di implementazione alle interfacce. Mentre RI viene utilizzato per estrarre i valori delle proprietà e le connessioni JDBC da JNDI. DI consente di scrivere codice contro le interfacce e decidere in seguito quale implementazione utilizzare. C'è qualche sovrapposizione, in genere quando gli oggetti RI'd sono più di un semplice valore di una proprietà e quando il DI viene utilizzato per passare un valore di proprietà. Un buon esempio di questa sovrapposizione, come ho già detto, è le connessioni JDBC. Una connessione JDBC non è solo una stringa di connessione (valori di proprietà) ma è anche un'implementazione (quali driver utilizzare).

Penso che se si utilizza DI e sia necessario passare qualche valore di proprietà, continuare a utilizzare DI. E se stai usando RI e hai bisogno di passare un oggetto, allora fallo nel RI, se possibile. In definitiva, se si usano entrambi, allora ci sono più file XML che devono essere compilati.

+0

Ok, Thnks per questo –

Problemi correlati