2009-11-02 4 views

Répondre

14

La différence est le setter sera appelé si c'est là que vous le dites, ce qui est utile si elle d'autres choses utiles, validation, etc. En général, vous comparez:

public class A { 
    private B instanceB; 

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

vs

public class A { 
    @Autowired 
    private B instanceB; 
} 

(c'est-à-dire qu'il n'y a pas de setter).

Le premier est préférable dans cette situation, car l'absence d'un setter rend le test de simulation/unité plus difficile. Même si vous avez un setter mais que vous autorisez le membre de données, vous pouvez créer un problème si le setter fait quelque chose de différent. Cela invaliderait vos tests unitaires.

Questions connexes