Dois-je fournir un setter pour @Autowired
Je suis à l'aide de Spring 3.0.x avec mon projet.
Ma pratique actuelle avec @Autowired
est illustré comme suit:
@Autowired
private SomeType someMemberVariable;
Est l'utilisation d'une méthode de définition et/ou à privilégier? Par setter, je veux dire les éléments suivants:
private SomeType someMemberVariable;
@Autowired
private void setSomeMemberVariable(SomeType newValue)
{
someMemberVariable = newValue;
}
Je comprends mutable vs immuable setters, qui est hors de portée pour cette question.
source d'informationauteur DwB | 2010-11-10
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas à l'aide d'un poseur lors de l'utilisation de
@Autowired
- il ajoute du code réutilisable.Chaque fois que j'ai besoin de définir une dépendance dans une unité de test, j'utilise
ReflectionTestUtils.setField(..)
- il n'est pas au moment de la compilation sûr qu'un jour, mais je n'ai pas beaucoup de difficulté avec elle.Au passage, si à l'aide de spring 3.0, vous pouvez commencer à utiliser
@Inject
au lieu de@Autowired
Je préfère utiliser les setters et getters, car il vous permet d'associer l'objet lorsque vous n'êtes pas de l'exécuter dans un Printemps contexte (c'est à dire, le réglage se moque dans un test unitaire).