【发布时间】:2013-12-08 21:53:08
【问题描述】:
Spring容器实例化的Spring beans默认是singleton beans...datasource, sessionFactory通过spring xml实例化的都是singleton 当我使用@Controller、@Repository、@Service,创建对象。
如果该名称仅创建一个对象,如何同时处理向 Spring MVC 应用程序发送请求的用户?它们是否由相同的对象处理
这些请求是否由 spring 控制器/服务单例对象控制/服务?如果是的话,我猜它可能会导致混乱......
作为 STRUTS2 中的并行,有一个 创建单独对象的值堆栈。 SPRING MVC/Annotation 中是否有类似的概念???
这听起来很基本,但就我搜索 spring 网站/stackoverflow 而言,我还没有遇到可以解释这方面的东西。
请对此有所了解..
【问题讨论】:
-
是的,相同的对象处理所有用户的请求(只要只有JVM实例)。这不会“搞砸”,因为大多数控制器是无状态的或只读的(即它们不修改自己的状态)并将请求和用户信息保存在专用对象中。这个问题是关于 java servlet 如何工作的,因为这不是 Spring 特定的,请参阅 stackoverflow.com/questions/3106452/… 所以是的,控制器和存储库可能会存在数周甚至数月,直到关闭。
-
@BorisTreukhov 当您提到“这是关于 java servlet 的工作”时,控制器或服务类是否扩展了 HttpServlet?控制器注释只是提到该类充当控制器的角色。
-
不,控制器不扩展 HttpServlet,但 Spring DispatcherServlet 可以(它实现了前端控制器设计模式)它有自己的 Spring 上下文(一组对象)并将请求处理委托给这个对象上下文(实际上是映射器类,然后将处理委托给
@Controller注释的bean)。
标签: spring model-view-controller annotations