Spring MVC中Controller的生命周期是什么?
何时创建控制器,何时销毁?它是在多个线程之间共享的吗?可以通过多个请求同时使用它。
答案 0 :(得分:25)
以下是生命周期的视图:
http://www.flickr.com/photos/60896767@N00/89101625/sizes/l/
是的,它们由线程/请求共享;你应该把它们写成线程安全的。他们应该是无国籍的。通常他们会引用Spring服务来完成所有工作。控制器处理Web层的绑定,验证和路由。
答案 1 :(得分:14)
控制器只是bean,它们可以是单例或原型,它取决于你想要做什么。如果你想要有状态使用原型,默认情况下它们是单身。
http://www.digizenstudio.com/blog/2006/10/09/spring-controllers-with-prototype-scope/
答案 2 :(得分:9)
Spring MVC的所有控制器都是单例。与其他普通的单例bean一样,控制器实例将在Web应用程序上下文启动后创建,并在它结束之前处理。
即使您为控制器bean定义指定了其他范围(例如,原型),因为spring为控制器提供了某种缓存以提高性能,但只会重复使用第一个获取的控制器实例。