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.
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.
Контроллеры - это просто bean-компоненты, они могут быть одноэлементными или прототипными, в зависимости от того, что вы пытаетесь сделать. Если вы хотите использовать прототип с сохранением состояния, по умолчанию они одноэлементные.
http: //www.digizenstudio .com / blog / 2006/10/09 / spring-controllers-with-prototype-scope /
Все контроллеры Spring MVC одноэлементные. Как и другие обычные одноэлементные компоненты, экземпляры контроллеров будут созданы после запуска контекста веб-приложения и удалены до его завершения.
Даже если вы укажете другую область (например, прототип) для определения bean-компонента контроллера, поскольку в Spring есть какой-то кеш для контроллеров для повышения производительности, только первый полученный экземпляр контроллера будет использоваться повторно.