[英]Spring Application Context - Main and Test Folders
我有一个Spring项目,有4个典型的源文件夹 - main/src
, main/resources
, test/src
和test/resources
。 当我运行我的应用程序时,Spring在main/resources
获取应用程序上下文文件,如果我运行任何Junit测试,它将获取test/resources
下的application-context.xml
文件。 Spring如何适当地获取application-context.xml
文件或者是否涉及任何配置?
尝试使用jsf
或Struts
运行任何其他项目,他们也将从相应的文件夹中选择资源。 它与春天无关。 它将由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感知测试扩展的层次结构的一部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.