2

我们正在使用 Struts2-Spring 集成,我所有的动作类都实现了 SessionAware,动作类的示例代码及其弹簧定义如下所示,

public class IRXxxxAction extends ActionSupport implements SessionAware {
  private Map session;

  public String execute()
  {//}

  public void setSession(Map<String, Object> session)
  {
    this.session = session;
  }
} 

弹簧配置

<bean name="userAction" class="com.IRXxxxAction" >
    <property name="adminDAO" ref="adminDAO" />
</bean>

如果我理解正确,每个自动连接的属性都将是一个单例,所以如果上述情况属实,那么会话映射是否会在两个同时请求之间共享?

问候,

阿尤什

4

1 回答 1

6

您在用户邮件列表中提出了相同的问题,并且如您所说,如果您使用 Struts2-Spring 插件,请确保将 bean 范围设置为prototype.

Struts2 在每个请求上创建新的动作实例,因为动作也作为模型工作,并且为了使其线程安全,在每个请求上创建一个新对象并将其放置在值堆栈上。

不证明范围将被 Spring 视为singleton并且永远请求相同的操作实例将被返回,这可能导致从数据损坏到奇怪行为的许多问题。

于 2012-11-29T16:01:18.947 回答