how to reference a bean of another xml file in spring how to reference a bean of another xml file in spring spring spring

how to reference a bean of another xml file in spring


You have a couple of options:

Import

<import resource="classpath:config/spring/that-other-xml-conf.xml"/><bean id="yourCoolBean" class="org.jdong.MyCoolBean">    <property name="anotherBean" ref="thatOtherBean"/></bean>


Include in the ApplicationContext Construction

Make both files a part of your ApplicationContext when you create it => then no import is needed.

For example if you need it during testing:

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration({ "classpath:META-INF/conf/spring/this-xml-conf.xml",                    "classpath:META-INF/conf/spring/that-other-xml-conf.xml" })public class CleverMoneyMakingBusinessServiceIntegrationTest {...}

In case it is a web app, you'd do it in web.xml:

<context-param>     <param-name>contextConfigLocation</param-name>    <param-value>WEB-INF/conf/spring/this-xml-conf.xml</param-value>    <param-value>WEB-INF/conf/spring/that-other-xml-conf.xml</param-value></context-param><listener>     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

If it is a stand alone app, library, etc.. you would load your ApplicationContext as:

new ClassPathXmlApplicationContext(     new String[] { "classpath:META-INF/conf/spring/this-xml-conf.xml",                   "classpath:META-INF/conf/spring/that-other-xml-conf.xml" } );


Just import the xml defining the bean with <import resource="otherXml.xml"> and you will be able to use the bean definition.

You can use classpath: in the resource attribute:

<import resource="classpath:anotherXXML.xml" />

See the "3.18. Importing Bean Definitions from One File Into Another" in this chapter of the Spring Reference


You reference it exactly as you would reference a bean in the same XML file. If a spring context is composed of several XML files, all the beans are part of the same context, and thus share a unique namespace.