2013-02-16 36 views
1

我想在我的ZK Composer中为通用URL解析创建一个实用Bean。不过,我想确保在Spring管理的Bean中使用诸如Executions.getCurrent()之类的东西是安全的。我很确定这是因为Executions.getCurrent()是静态的开始。ZK&Spring - 在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 
    } 

} 

..used像这样..

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

    @WireVariable 
    public MyUrlBean myUrlBean; 

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

} 

所以,做事情就这样,一切都应该正常工作或我应该预见用户会话碰撞或类似问题?

春豆是不是静态singletons,是否正确?相反,它们是自动装配的实例类,以节省实际新建对象的计算时间,对吗?如果是这样的话,这样的用户之间肯定不会发生冲突。

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

+1

它应该工作,至少它是由ZK正式支持(参见官方文件http://books.zkoss.org/wiki/ZK_Spring_Essentials/Working_with_ZK_Spring/Working_with_ZK_Spring_Core/Using_Custom_ZK_Scopes_For_Spring_Beans)对我来说不够好 – benbai123 2013-02-16 16:52:08

回答

0

是的,它是安全的。

我没有太多的官方消息来源可以链接到这里,但为了什么值得,我以前的团队几乎在每个页面(获取用户上下文)中都使用这个应用程序,为生产中的3000多个用户提供服务两年内没有记录问题。

+0

,感谢他们服用有时间回答 – 2013-02-28 13:34:53