Controller's life-cycle in Spring MVC

Asked
Viewd29741

37

What is the lifecycle of a Controller in Spring MVC?

When is the controller created, when destroyed? Is it shared among multiple threads? Can it be in use simultaneously by more than one request.

3 ответов

25

Here's a view of the lifecycle:

http://www.flickr.com/photos/[email protected]/89101625/sizes/l/

Yes, they're shared by threads/requests; you should write them to be thread-safe. They should be stateless. Usually they have a reference to a Spring service that does all the work. Controllers handle binding, validation, and routing for the web tier.

14

Контроллеры - это просто bean-компоненты, они могут быть одноэлементными или прототипными, в зависимости от того, что вы пытаетесь сделать. Если вы хотите использовать прототип с сохранением состояния, по умолчанию они одноэлементные.

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

9

Все контроллеры Spring MVC одноэлементные. Как и другие обычные одноэлементные компоненты, экземпляры контроллеров будут созданы после запуска контекста веб-приложения и удалены до его завершения.

Даже если вы укажете другую область (например, прототип) для определения bean-компонента контроллера, поскольку в Spring есть какой-то кеш для контроллеров для повышения производительности, только первый полученный экземпляр контроллера будет использоваться повторно.