2014-07-15 34 views
1

我有以下問題。我的多模塊彈簧應用程序在啓動時加載了兩個不同的上下文。在jsp中使用不同上下文和SpringBeanAutowiringSupport的彈簧

上下文一加載了這段代碼片段。

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

,並通過Web服務休息

<servlet> 
    <servlet-name>rest</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/components_webservice.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

另外一個現在我用這個命令來使用jsp內自動裝配豆一個jsp。

SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); 

這隻允許自動裝配主環境中定義的bean。我無法從REST Servlet聲明的上下文中自動調用bean。有沒有辦法讓這個上下文在jsp中可用?我知道一種方法是在主要上下文中聲明所有的bean,但我希望它們保持分離。

問候, smoothny

+0

在此查看javadoc的ContextLoader http://docs.spring.io/spring/docs/2.5.6/api/org/springframework/web/context/ContextLoader.html#getCurrentWebApplicationContext()。您可以使用「contextConfigLocation」參數配置位置。 – Priyesh

回答

1

不要放任何邏輯你的JSP中。在控制器中自動填充字段,並將生成的值傳遞給模型。

+0

這不會有什麼區別,因爲控制器也可能在不同的環境中運行。我的問題是如何從另一個上下文(contextConfigLocation配置一個vs默認的spring上下文)自動調用bean。 – smoothny

+0

您可以嘗試使用導入標記,但這可能導致循環依賴上下文:。 – Stefan