gpt4 book ai didi

java - Struts 1 是否为每个 session 创建一个 Controller 对象,或者 Controller 类是单例吗?

转载 作者:行者123 更新时间:2023-11-30 04:23:04 25 4
gpt4 key购买 nike

我有一个 Struts 1/Spring 2 应用程序。我想知道我的 Action 类是由所有 session 共享的单例,还是每个用户/ session 都获得一个新的Action 类的对象?

最佳答案

我不确定Struts Action类是作为单例实现的,但我可以说框架只使用它的一个实例,并且只有一个实例用于处理所有传入请求,必须注意不要做某事Action 类中的 with 不是线程安全的。来自 javadoc :

操作必须以线程安全的方式进行编程,因为 Controller 将为多个同时请求共享同一个实例。这意味着您在设计时应考虑以下事项:

  1. 实例和静态变量不得用于存储与特定请求状态相关的信息。它们可以用于在同一操作的请求之间共享全局资源。
  2. 如果其他资源(JavaBean、 session 变量等)需要保护,则这些资源的访问必须同步。 (但是,一般来说,资源类应设计为在必要时提供自己的保护。
<小时/>

编辑:

官方是这样的Apache Struts页面说:

Struts 1 Action 是单例并且必须是线程安全的,因为只有一个类的实例来处理该 Action 的所有请求。单例策略限制了 Struts 1 Actions 的功能,并且在开发时需要格外小心。操作资源必须是线程安全的或同步的。

关于java - Struts 1 是否为每个 session 创建一个 Controller 对象,或者 Controller 类是单例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16509261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com