Estoy lidiando con una aplicación web Spring MVC que se inicia usando un DispatcherServlet
. Se crea una XmlWebApplicationContext
que gestiona toda la aplicación:Jerarquía de contexto de primavera con contexto de aplicación web
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Ahora bien, hay algunos módulos que deben ser cargados en tiempo de ejecución utilizando un ContextSingletonBeanFactoryLocator
. Por lo tanto, cada módulo tiene su propio ClasspathXmlApplicationContext
. Para que un módulo pueda hacer referencia a los beans del XmlWebApplicationContext
, debe adjuntarse al XmlWebApplicationContext
para formar una Jerarquía de contexto en la que el XmlWebApplicationContext
debe desempeñar el papel del elemento primario y el ClasspathXmlApplicationContext
del módulo El rol del contexto secundario. Desafortunadamente no soy capaz de conectarlos mediante
<beans>
<bean id="moduleContext"
class="org.springframework.context.support.ClassPathXmlApplicationContext">
<constructor-arg>
...
</constructor-arg>
<constructor-arg ref="parentContext" />
</bean>
</beans>
porque he encontrado ninguna manera en lo que va a dar a la WebApplicationContext
el nombre parentContext
. ¿He pasado por alto algo o hay una forma mejor/más fácil de lograr lo mismo de una manera diferente?
¿De dónde saco 'childs' si no los conozco de antemano? – aha
Probé el código que propones. Funciona, pero no se propaga al 'ContextSingletonBeanFactoryLocator'. Pero conduce en la dirección correcta: el camino a seguir es no utilizar un 'ContextSingletonBeanFactoryLocator' sino cargar manualmente los contextos secundarios (usando un' GenericApplicationContext') y adjuntarlos al contexto principal en un 'InitializingBean'. – aha