繁体   English   中英

Spring应用程序上下文 - 主文件夹和测试文件夹

[英]Spring Application Context - Main and Test Folders

我有一个Spring项目,有4个典型的源文件夹 - main/srcmain/resourcestest/srctest/resources 当我运行我的应用程序时,Spring在main/resources获取应用程序上下文文件,如果我运行任何Junit测试,它将获取test/resources下的application-context.xml文件。 Spring如何适当地获取application-context.xml文件或者是否涉及任何配置?

尝试使用jsfStruts运行任何其他项目,他们也将从相应的文件夹中选择资源。 它与春天无关。 它将由maven或您正在使用的任何其他构建系统处理。

main/src , main/resources , test/src , test/resources 

创建maven或gradle项目时,这些文件夹是标准的。

应用程序告诉Spring应用程序上下文的位置。 Web应用程序通过在web.xml中配置ContextLoaderListener来完成此操作。 对于每个测试,如何加载应用程序上下文是测试配置的一部分,@ ContextConfiguration注释指定如何从哪个位置或从带注释的类加载上下文。

例如,如果我设置要使用的测试

@ContextConfiguration(loader = AnnotationConfigContextLoader.class,
classes = MyTest.ContextConfiguration.class)
public class MyTest {
    @Autowired MyStuff stuff;

    static class ContextConfiguration {
        @Bean public MyStuff getMyStuff() {
            return new MyStuff();
        }
    }
}

然后MyTest使用测试中的注释来决定注入的内容,并使用指定的ContextConfiguration填充这些字段。 它完全忽略了类路径中的任何xml配置。

上下文加载器还可以指定加载上下文的位置,请参阅org.springframework.test.context.ContextLoader的文档。

你没有说你正在使用的是什么版本的Spring。 在3.0测试之前,通过实现类org.springframework.test.AbstractSpringContextTests的抽象方法loadContext来管理测试上下文,这是Spring感知测试扩展的层次结构的一部分。

我知道这个问题很老但是使用Spring-boot 2.x文件夹结构是不同的。 这是我从Spring初始化器和IntelliJ得到的:

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM