ZK & Spring – безопасно использовать Executions.getCurrent() в Spring Bean?

Я хочу создать служебный компонент для общего анализа URL-адресов в моих ZK Composers. Однако я хочу убедиться, что безопасно использовать такие вещи, как Executions.getCurrent() в управляемом компоненте Spring. Я почти уверен, что это так, поскольку 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() является статическим. Хм, как это работает, когда несколько пользователей обращаются к веб-приложению?


person Sean Connolly    schedule 16.02.2013    source источник
comment
Это должно работать, по крайней мере официально поддерживается ZK (см. официальный документ books .zkoss.org/wiki/ZK_Spring_Essentials/)   -  person benbai123    schedule 16.02.2013


Ответы (1)


Да, это безопасно.

У меня не так много официальных источников, на которые я мог бы ссылаться здесь, но моя предыдущая команда использовала это почти на каждой странице (чтобы получить пользовательский контекст) приложения, обслуживающего более 3000 пользователей в рабочей среде, без каких-либо зарегистрированных проблем в два года.

person Silver Quettier    schedule 26.02.2013