1

我想在我的 ZK Composers 中为常见的 URL 解析创建一个实用程序 Bean。但是,我想确保Executions.getCurrent()在 Spring 托管 Bean 中使用类似的东西是安全的。我很确定它Executions.getCurrent()一开始就是静态的。

这就是我想做的事情..

@Component
public MyUrlBean {

  // TODO I will, of course, program to an interface here =)

  private static final String MY_OBJECT_URL_PARAMETER = "my_obj";

  public MyObject getMyObjectFromURL() {
    Execution ex = Executions.getCurrent();
    String value = ex.getParameter(MY_OBJECT_URL_PARAMETER)
    // ... db fetch and the like
  }

}

..像这样使用..

@VariableResolver(DelegatingVariableResolver.class)
public MyComposer extends SelectorComposer<Window> {

  @WireVariable
  public MyUrlBean myUrlBean;

  @Override
  public void doAfterCompose(Window component) {
    MyObject myObject = myUrlBean.getMyObjectFromURL();
    // ...
  }

}

那么,以这种方式做事,应该一切正常,还是应该预料到用户会话冲突等问题?

Spring bean不是静态单例,对吗?相反,它们是自动装配的实例类,以节省实际更新对象的计算时间,对吗?如果是这样,那么用户之间肯定不会发生这样的冲突。

无论如何,正如我提到的,Executions.getCurrent()是静态的。嗯,这如何与访问 web 应用程序的多个用户一起工作?

4

1 回答 1

0

是的,它是安全的。

我没有太多官方资源可以在这里链接,但值得一提的是,我以前的团队几乎在一个应用程序的每个页面(以获取用户上下文)中都使用它,该应用程序在生产中为超过 3000 个用户提供服务,并且没有记录问题两年。

于 2013-02-26T15:25:12.540 回答