Tôi đang xử lý một ứng dụng web Spring MVC được khởi động bằng cách sử dụng DispatcherServlet
. Nó tạo ra một XmlWebApplicationContext
trong đó quản lý toàn bộ ứng dụng:Phân cấp bối cảnh mùa xuân với ngữ cảnh ứng dụng 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>
Bây giờ có một số module cần được nạp trong thời gian chạy bằng cách sử dụng ContextSingletonBeanFactoryLocator
. Do đó, mỗi mô-đun có ClasspathXmlApplicationContext
riêng. Vì vậy, một mô-đun có thể tham chiếu đậu từ XmlWebApplicationContext
, nó phải được gắn vào XmlWebApplicationContext
để tạo thành một hệ thống phân cấp theo ngữ cảnh trong đó XmlWebApplicationContext
nên đóng vai trò của phụ huynh và ClasspathXmlApplicationContext
của mô-đun vai trò của ngữ cảnh con. Đáng tiếc là tôi không thể kết nối chúng bằng cách sử
<beans>
<bean id="moduleContext"
class="org.springframework.context.support.ClassPathXmlApplicationContext">
<constructor-arg>
...
</constructor-arg>
<constructor-arg ref="parentContext" />
</bean>
</beans>
vì tôi đã tìm thấy không có cách nào cho đến nay để cung cấp cho các WebApplicationContext
tên parentContext
. Tôi đã bỏ qua một cái gì đó hoặc là có một cách tốt hơn/dễ dàng hơn để đạt được như vậy trong một thời trang khác nhau?
Tôi có thể nhận được 'childs' từ đâu nếu tôi không biết trước? – aha
Tôi đã thử mã bạn đề xuất. Nó hoạt động, nhưng không truyền đến 'ContextSingletonBeanFactoryLocator'. Nhưng nó đi đúng hướng: Con đường để đi không phải là sử dụng một 'ContextSingletonBeanFactoryLocator' nhưng để tự nạp các bối cảnh con (sử dụng một' GenericApplicationContext') và đính kèm chúng vào bối cảnh cha mẹ trong một 'InitializingBean'. – aha