我有一个关于Spring 3 MVC @Controllers
。当请求到来时,容器是否为每个请求创建一个新的控制器实例(类似于Action在 Struts 2 中 - ThreadLocalActionContext
)还是单个实例响应所有请求?默认情况下,控制器 bean 在上下文中是单例吗?
Spring 3 MVC 应用程序的指南/最佳实践是什么?这些设置可以配置吗?应该配置那些吗?
如果我的环境是集群环境,它会发生很大变化吗?我想它应该不会,因为 jvm/容器会有所不同,但欢迎一些权威建议。
我已经阅读了 Spring 文档,但可能我错过了。任何“这就是我们实现的方式”答案/指针/链接都会有帮助
谢谢。
Spring 控制器是单例(每个 Web 应用程序的每个控制器只有一个实例),就像 servlet 一样。通常,改变这种行为是没有意义的(如果可能的话)。看关于servlet的线程安全 https://stackoverflow.com/questions/11485486对于常见的陷阱,也适用于控制器。
如果您的应用程序是集群化的,请尽可能避免出现状态。控制器中的状态需要同步以避免线程问题。此外,您可能会跨服务器复制该状态 - 非常昂贵且麻烦。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)