DispatcherServlet
を使用してブートストラップされたSpring MVC Webアプリケーションを処理しています。これは、アプリケーション全体を管理XmlWebApplicationContext
を作成します。Webアプリケーションコンテキストを使用したSpringコンテキスト階層
<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>
は今ContextSingletonBeanFactoryLocator
を使用して実行時にロードされなければならないいくつかのモジュールがあります。したがって、すべてのモジュールは独自のClasspathXmlApplicationContext
を持っています。モジュールがXmlWebApplicationContext
からのBeanを参照できるように、XmlWebApplicationContext
に接続して、XmlWebApplicationContext
が親の役割を果たし、モジュールのClasspathXmlApplicationContext
が子コンテキストの役割を果たすコンテキスト階層を形成する必要があります。残念ながら、私は私がこれまでWebApplicationContext
に名前parentContext
を与えるする方法を発見したので
<beans>
<bean id="moduleContext"
class="org.springframework.context.support.ClassPathXmlApplicationContext">
<constructor-arg>
...
</constructor-arg>
<constructor-arg ref="parentContext" />
</bean>
</beans>
を使用してそれらを接続することができませんよ。私は何かを見落としてしまったのですか、それとも違う方法で同じことを達成するためのより良い/簡単な方法がありますか?
私はそれらを事前に知らないと、どこから '子ども 'を得るのですか? – aha
あなたが提案したコードを試しました。それは動作しますが、 'ContextSingletonBeanFactoryLocator'に伝播しません。しかし、それは正しい方向に導きます:「ContextSingletonBeanFactoryLocator」を使うのではなく、(GenericApplicationContextを使って)子コンテキストを手動でロードし、それらを 'InitializingBean'の親コンテキストに添付することです。 – aha