Controller在Spring MVC中的生命周期

Spring MVC中Controller的生命周期是什么?

控制器何时创build,何时销毁? 它在多个线程之间共享吗? 可以同时使用多个请求。

以下是生命周期的一个视图:

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

是的,他们是由线程/请求共享的; 你应该写他们是线程安全的。 他们应该是无国籍的。 通常他们有一个Spring服务的参考,完成所有的工作。 控制器处理Web层的绑定,validation和路由。

控制器只是bean,它们可以是单例或者原型,这取决于你想要做什么。 如果你想有状态使用原型,默认情况下它们是单例。

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

Spring MVC的所有控制器都是单例的。 和其他正常的singleton bean一样,控制器的实例将在web应用上下文开始之后被创build,并且在其结束之前被处理。

即使你为控制器bean定义指定了其他范围(例如原型),因为spring有一些性能控制器的caching,只有第一个获得的控制器实例会被重复使用。