当您谈到Spring应用程序是多线程时,您是否一定是指该应用程序中定义的servlet是否是多线程的?
或者,即使应用程序中的servlet不是多线程的,Spring应用程序也可以配置为多线程吗?
发布于 2011-05-12 23:18:05
不再支持单线程servlet。它们已经被弃用了很长时间,所以所有的servlet都是多线程的。
然后,spring不使用servlet(除了dispatcher之外)。它使用bean,bean可以是控制器、服务和存储库(daos)。
这些mean是线程安全的(我想你所说的“多线程”是指“多线程”),如果它们的字段中没有任何数据(除了它们的依赖项)。
简而言之,不要在spring bean中存储任何数据。将所有需要的数据作为参数传递。
发布于 2011-05-12 23:19:13
典型的java web应用是多线程的,因为每个请求都是在它自己的线程上处理的。在这类应用程序中,当您拥有维护状态的对象(例如,通过修改静态属性)时,您必须小心,因为它们可能会相互覆盖。
在讨论servlet时,如果两个请求同时进入同一个servlet,则相关的servlet代码将同时执行两次。在像Struts或Spring这样将请求委托给对象的框架中,可以重用相同的bean实例,也可以为每个请求创建一个新的bean实例,这取决于您配置框架的方式(即在Spring中使用原型或单例)。
发布于 2011-05-12 23:19:17
Spring MVC使用一个分派servlet来调用定义的Controller,也就是说,控制器应该是无状态的,排除了Spring注入的bean。通过一个操作更改一个控制器的状态可以影响另一个操作。
https://stackoverflow.com/questions/5980246
复制相似问题