如何在春季引用另一个xml文件的bean

2022-09-01 02:00:07

我有一个在xml文件中定义的Spring Bean。我想从另一个xml文件中引用它。我该怎么做?


答案 1

您有几种选择:

进口

<import resource="classpath:config/spring/that-other-xml-conf.xml"/>

<bean id="yourCoolBean" class="org.jdong.MyCoolBean">
    <property name="anotherBean" ref="thatOtherBean"/>
</bean>


包括在建筑中ApplicationContext

创建这两个文件时,使这两个文件都成为您的一部分 =>则无需导入。ApplicationContext

例如,如果您在测试期间需要它:

@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 {...}

如果它是一个Web应用程序,您可以在以下位置执行此操作: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>

如果它是独立的应用程序,库等。你会加载你的作为:ApplicationContext

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

答案 2

只需导入定义bean的xml,您就可以使用Bean定义。<import resource="otherXml.xml">

您可以在属性中使用:classpath:resource

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

请参阅“3.18.将 Bean 定义从一个文件导入另一个文件“,请参阅 Spring 参考的本章