Spring MVC 中控制器的生命周期
Posted
技术标签:
【中文标题】Spring MVC 中控制器的生命周期【英文标题】:Controller's life-cycle in Spring MVC 【发布时间】:2010-12-01 16:56:12 【问题描述】:Spring MVC 中 Controller 的生命周期是什么?
控制器何时创建,何时销毁?它是否在多个线程之间共享?是否可以同时被多个请求使用。
【问题讨论】:
【参考方案1】:这是生命周期的视图:
http://www.flickr.com/photos/60896767@N00/89101625/sizes/l/
是的,它们由线程/请求共享;你应该把它们写成线程安全的。他们应该是无国籍的。通常他们有一个对完成所有工作的 Spring 服务的引用。控制器处理 Web 层的绑定、验证和路由。
【讨论】:
【参考方案2】:Spring MVC 的所有控制器都是单例的。与其他普通的单例 bean 一样,控制器实例将在 Web 应用程序上下文启动后创建,并在其结束前释放。
即使你为控制器 bean 定义指定了其他范围(例如原型),因为 spring 为控制器提供了某种缓存以提高性能,只有第一个获取的控制器实例会被重复使用。
【讨论】:
【参考方案3】:控制器只是 bean,它们可以是单例或原型,这取决于您要做什么。如果你想要有状态使用原型,默认情况下它们是单例的。
http://www.digizenstudio.com/blog/2006/10/09/spring-controllers-with-prototype-scope/
【讨论】:
以上是关于Spring MVC 中控制器的生命周期的主要内容,如果未能解决你的问题,请参考以下文章
为啥没有适用于 python 的 Spring DI(组件生命周期)框架?