2010-07-01 5 views
0

Je suis en train de câbler mes classes de type UserService en utilisant le CIO du printemps.Quels haricots filmez-vous dans une application printemps mvc?

Mais qu'en est-il de ma classe User? J'ai une interface utilisateur, puis une classe UserImpl.

Dans mon action du contrôleur dois-je faire simplement:

User u = new UserImpl(); 

Ou serait-il parfois judicieux d'utiliser du CIO pour cela aussi? Parfois, j'utilise un constructeur différent également lors de l'instanciation d'une classe, en fonction de certaines conditions. Je suppose que vous êtes coincé dans ces situations?

Répondre

3

Cela n'a pas de sens d'utiliser l'injection de dépendances ou IOC pour vos objets métier comme l'utilisateur, car les objets métier ne sont pas les dépendances de la classe, ils font partie de la classe qui les utilise.

1

Printemps IOC, par défaut, créera des singletons pour vous. Ce qui signifie que tous les threads utilisateur utilisant votre application partageront cette instance unique de classe. C'est généralement bien pour les classes de type Service. Si nécessaire, ce comportement singleton peut être changé en objet par requête (prototype), mais cela vous amènera également à modifier ce paramètre pour les utilisateurs de l'objet non-sigleton.

Les classes de domaine/métier sont complètes, il est plus facile de créer de tels objets une fois par requête afin d'éviter les problèmes de simultanéité.