2011-07-06 49 views
1

有沒有辦法讓單個資源被多個控制器使用?由Java中的幾個MVC控制器共享單例資源

我們得到了2個servlet,每個servlet都有自己的應用程序上下文:one-servlet.xml & two-servlet.xml和lib-context.xml帶有單例bean「util」。

現在,如果我們將lib-context.xml導入到上述兩個servlet上下文中的每一個上,spring將爲每個servlet創建一個單獨的應用程序上下文,最後我們會得到2個singletone對象。

有沒有辦法配置應用程序,只有一個單身人士對象將被創建?

回答

1

是的。在您的web.xml中,使用ContextLoaderListener加載lib-context.xml,而不是使用DispatcherServlet加載它。

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     classpath:/lib-context.xml 
    </param-value> 
</context-param> 
<listener> 
    <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 

您可以從servlet特定的應用上下文配置文件中刪除導入。

所有DispatcherServlet s將不僅看到上面共享的lib-context.xml而且還看到它們自己加載的任何上下文。

(您可能需要調整我給出的param-value示例,該路徑僅爲示例。)