Dependency Injection (DI) è un modello di progettazione che rimuove la dipendenza dal codice di programmazione in modo che possa essere facile gestire e testare l'applicazione. L'iniezione di dipendenza rende il nostro codice di programmazione liberamente accoppiato. Per comprendere meglio il DI, comprendiamo prima la ricerca delle dipendenze (DL):
Ricerca delle dipendenze
La ricerca delle dipendenze è un approccio in cui otteniamo la risorsa dopo la richiesta. Possono esserci vari modi per ottenere la risorsa, ad esempio:
A obj = new AImpl();
In questo modo, otteniamo la risorsa (istanza della classe A) direttamente tramite la nuova parola chiave. Un altro modo è il metodo di fabbrica:
A obj = A.getA();
In questo modo, otteniamo la risorsa (istanza della classe A) chiamando il metodo factory statico getA().
In alternativa, possiamo ottenere la risorsa tramite JNDI (Java Naming Directory Interface) come:
Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A');
Possono esserci vari modi per ottenere la risorsa per ottenere la risorsa. Vediamo il problema in questo approccio.
Problemi di ricerca delle dipendenze
Esistono principalmente due problemi di ricerca delle dipendenze.
Iniezione di dipendenza
Il Dependency Injection è un modello di progettazione che rimuove la dipendenza dei programmi. In tal caso forniamo le informazioni da una fonte esterna come un file XML. Rende il nostro codice liberamente accoppiato e più facile da testare. In tal caso scriviamo il codice come:
class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } }
In tal caso, l'istanza della classe Indirizzo viene fornita da una fonte esterna come un file XML dal costruttore o dal metodo setter.
Due modi per eseguire l'inserimento delle dipendenze nel framework Spring
Il framework Spring fornisce due modi per iniettare la dipendenza
- Per costruttore
- Con il metodo Setter
Prossimi argomenti in Spring Dependency Injection
Iniezione di dipendenze da parte del costruttoreVediamo come possiamo iniettare la dipendenza dal costruttore.
Inserimento delle dipendenze tramite metodo setter
Vediamo come possiamo iniettare la dipendenza tramite il metodo setter.