2009-01-20 6 views
3

En expérimentant avec this question on collections in Spring.NET, j'ai découvert que Spring peut injecter une dépendance en utilisant un setter privé. J'ai deux questions:Comment Spring.NET utilise-t-il des setters privés?

  1. Est-ce documenté quelque part?
  2. L'utilisation de setters privés est-elle recommandée?

The documentation dit:

basée Setter-DI est réalisée en appelant des méthodes setter sur vos objets ...

Certes, il ne dit pas explicitement publiques méthodes setter, mais c'est ce que j'avais toujours supposé. J'utilise la version 1.0.2 sur .NET 3.5.

Répondre

2

Don,

pas ce n'est pas documenté asfaik - surtout parce que nous ne recommandons pas. La fonctionnalité est là pour prendre en charge des coins rares lors de la gestion des 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

+1

Merci! Peut-être cela vaudrait-il la peine de documenter et de décourager explicitement. Notez que l'ajout d'un setter privé modifie en fait la sémantique de l'injection de collection en l'ajoutant à replace. –

1

La version Java de Spring utilise la réflexion, qui peut obtenir à ces setters privés. C'est bien, car vous ne voudriez pas forcer quelqu'un à changer un objet immuable juste pour satisfaire Spring. Personnellement, je préfère utiliser l'injection constructeur chaque fois que je le peux.