我需要重新使用已存在的上下文作为spring中的父项。
我有2个xml文件 - bean.xml(父上下文),child-bean.xml(子上下文)
我能做到
ApplicationContext context2 = new ClassPathXmlApplicationContext(new String[] { "child-bean.xml" }, context);
但这种方法是通过代码。 有没有办法通过XML来控制它?
我尝试将其放在 child-bean.xml
中<import resource="bean.xml"/>
但它不一样,因为看起来父母中的所有bean都被重新创建了。
TL; DR
我需要确保在创建子上下文时不再创建父级bean的新实例。这是否可以通过XML实现,而无需改变应用程序上下文的初始化方式?
答案 0 :(得分:0)
在您的web.xml中,您可以使用以下方式加载多个应用程序上下文:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:bean1.xml,
classpath*:bean2.xml
</param-value>
</context-param>
答案 1 :(得分:0)
public class WebAppInitializer implements WebApplicationInitializer{
@Override
public void onStartup(ServletContext container) throws ServletException{
XmlWEbApplicationContext applicationContext =
new XmlWebApplicationContext();
applicationContext.setConfigLocation("classpath:spring/*.xml");
container.addListener(new ContextLoaderListener(applicationContext));
}
}
答案 2 :(得分:-1)
在我的情况下,我使用ref parent
我希望我的xml配置可以帮助您
<!--parent -->
<bean id="abstractService" abstract="true"
class="com.lizjason.spring.AbstractService">
<property name="companyName"
value="lizjason"/>
</bean>
<bean id="shippingService"
parent="abstractService"
class="com.lizjason.spring.ShippingService">
<property name="shippedBy" value="lizjason"/>
</bean>