Cycle de vie du contrôleur dans Spring MVC

Quel est le cycle de vie d'un contrôleur dans Spring MVC?

Quand le contrôleur est-il créé, lorsqu'il est détruit? Est-il partagé entre plusieurs threads? Peut-il être utilisé simultanément par plus d'une demande.

37
demandé sur flybywire 2009-09-26 23:32:47

3 réponses

Voici une vue du cycle de vie:

Http://www.flickr.com/photos/60896767@N00/89101625/sizes/l/

Oui, ils sont partagés par les threads/ requêtes; vous devriez les écrire pour être thread-safe. Ils devraient être apatrides. Habituellement, ils ont une référence à un service de printemps qui fait tout le travail. Les contrôleurs gèrent la liaison, la validation et le routage pour le niveau web.

25
répondu duffymo 2009-09-26 19:45:03

Contrôleurs sont juste haricots, ils peuvent être singleton ou prototype, cela dépend de ce que vous essayez de faire. Si vous voulez statefulness utiliser prototype, par défaut, ils sont singleton.

Http://www.digizenstudio.com/blog/2006/10/09/spring-controllers-with-prototype-scope/

14
répondu Mainguy 2009-09-27 14:03:55

Tous les contrôleurs de Spring MVC sont singleton. Comme les autres beans singleton normaux, l'instance des contrôleurs sera créée après le début du contexte de l'application web et éliminée avant la fin de celui-ci.

Même si vous spécifiez une autre portée (par exemple, prototype) pour la définition du bean du contrôleur, car spring a une sorte de cache pour les contrôleurs pour les performances, seule la première instance acquise du contrôleur sera utilisée à plusieurs reprises.

9
répondu 2009-09-27 03:35:01