我想在我的 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 应用程序的多个用户一起工作?