logo

Iniezione di dipendenza in primavera

  1. Iniezione di dipendenza in primavera
  2. Ricerca delle dipendenze
  3. Iniezione di dipendenza

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.

    accoppiamento strettoL'approccio di ricerca delle dipendenze rende il codice strettamente accoppiato. Se la risorsa viene modificata, dobbiamo eseguire molte modifiche nel codice.Non facile da testareQuesto approccio crea molti problemi durante il test dell'applicazione, soprattutto nei test della scatola nera.

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 costruttore

Vediamo come possiamo iniettare la dipendenza dal costruttore.


Inserimento delle dipendenze tramite metodo setter

Vediamo come possiamo iniettare la dipendenza tramite il metodo setter.