【问题标题】:How to load multiple Spring ApplicationContext XMLs in a separate module?如何在单独的模块中加载多个 Spring ApplicationContext XML?
【发布时间】:2014-12-14 02:24:24
【问题描述】:

在我提出问题之前,我必须承认我是 Java 和 Spring 的新手,因此我的问题可能听起来完全荒谬。我有一个基于 Spring 的 Java 应用程序,我的工作是为它编写集成/验收测试。现在,当我浏览项目结构时,我可以看到有多个 Bean 分布在不同的模块中,我需要实例化这些 Bean 来构建我的测试用例。快速浏览一下 Spring 教程还告诉我,在对 bean 进行任何有意义的工作之前,我必须加载 Application Context xml。因此,我加载了我想要测试的模块的应用程序上下文 XML。但是当我执行测试时,Spring 抱怨它无法找到一堆其他的 bean。现在,我知道这些“一堆”bean 存在于其他模块中,它们的接线信息位于其他一些应用程序上下文 xml 文件中。我的问题是,在 Spring 项目中

  1. 是否应该加载父级应用程序上下文 xml 文件而不是特定于模块的文件?

  2. 是否可以为我的测试项目创建一个应用程序上下文 xml 并在其中导入所有其他应用程序上下文 xml?

  3. 任何其他解决方案...

非常感谢任何帮助:)

【问题讨论】:

    标签: java xml spring spring-mvc


    【解决方案1】:

    嗯,这取决于您要测试的层。 让我试着用一个例子来回答你的问题: 假设您有一个服务和一个 DAO,并且您想要测试 DAO 层,您只需加载 dao.xml 并在 tests.xml(如果有)中连接您的测试特定 bean。因此,实际上您的 tests.xml 将包含

     <beans> <import resource ="dao.xml"/>  <bean id="abstractTest" class="com.something.AbstractTest"/>  </beans>
    

    您将使用SpringJUnit4ClassRunner 运行您的测试,并提及tests.xml 作为您的ContextConfiguration

    【讨论】:

    • 感谢 justanother 的快速帮助。不过,我可以用一个后续问题来打扰你吗?所以情况是,在项目中有 1. BeanObject1 2. BeanObject2 3. BeanObject3 这三个在不同的模块中,因此在不同的xmls(BeanObject1Context.xml,BeanObject2Context.xml,BeanObject3Context.xml)中定义。依赖关系是这样的:BeanObject3 on BeanObject2 on BeanObject1。如果我要测试 BeanObject2,我应该导入哪个 xml?
    • @LegolasVonWoodland 您将 BeanObject2Context.xml 导入您的测试。此外,在您的 Junit 中,您可以自动装配您要测试的夹具。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2017-10-04
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多