2009-11-02 6 views

Respuesta

14

La diferencia es el colocador se llamará si es allí donde lo pones, lo cual es útil si lo hace otras cosas útiles, validación, etc. Por lo general, usted está comparando:

public class A { 
    private B instanceB; 

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

vs

public class A { 
    @Autowired 
    private B instanceB; 
} 

(es decir, no hay incubadora).

La primera es preferible en esta situación porque la falta de un colocador hace que las pruebas de burla/unidad sean más difíciles. Incluso si tiene un setter pero autoelenea el miembro de datos, puede crear un problema si el setter hace algo diferente. Esto invalidaría las pruebas de su unidad.

Cuestiones relacionadas