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