2009-11-02 14 views

risposta

14

la differenza è il setter sarà chiamata se questo è dove lo metti, che è utile se lo fa altre cose utili, la convalida, ecc Di solito si sta confrontando:

public class A { 
    private B instanceB; 

    @Autowired 
    public setInstanceB(B instanceB) { 
    this.instanceB = instanceB; 
    } 
} 

vs

public class A { 
    @Autowired 
    private B instanceB; 
} 

(ovvero non c'è un setter).

Il primo è preferibile in questa situazione perché la mancanza di un setter rende più difficile il test di derisione/unità. Anche se hai un setter ma autowire il membro dati puoi creare un problema se il setter fa qualcosa di diverso. Ciò invaliderebbe il test dell'unità.

Problemi correlati