Comment Spring.NET utilise-t-il les setters privés?
-
19-08-2019 - |
Question
Tout en expérimentant avec cette question sur les collections dans Spring.NET , j’ai découvert que Spring peut injecter une dépendance à l’aide d’un paramètre privé. J'ai deux questions:
- Est-ce documenté n'importe où?
- L'utilisation de setters privés est-elle recommandée?
La documentation dit :
La DI basée sur un setter est réalisée en appelant des méthodes de définition sur vos objets ...
Certes, cela ne dit pas explicitement les méthodes de définition public , mais c'est ce que j'avais toujours supposé. J'utilise la version 1.0.2 sur .NET 3.5.
La solution
Don,
Non, cela n’est pas documenté, car nous ne le recommandons pas. Cette fonctionnalité est là pour prendre en charge les majuscules lorsqu’il s’agit de bibliothèques héritées / tierces.
Vous ne devez utiliser que des setters publics que vous pouvez également appeler depuis vos tests unitaires!
hth, Erich
Autres conseils
La version Java de Spring utilise la réflexion, ce qui peut atteindre ces installateurs privés. C’est bien, car vous ne voudriez pas forcer quelqu'un à changer d'objet immuable pour satisfaire le printemps.
Personnellement, je préfère utiliser l’injection de constructeur chaque fois que je le peux.