我有一个包含4个典型源文件夹的Spring项目 - main/src
,main/resources
,test/src
和test/resources
。当我运行我的应用程序时,Spring在main/resources
中获取应用程序上下文文件,如果我运行任何Junit测试,它将获取application-context.xml
下的test/resources
文件。 Spring如何适当地获取application-context.xml
文件或是否涉及任何配置?
答案 0 :(得分:1)
尝试使用jsf
或Struts
运行任何其他项目,他们也会从相应的文件夹中选择资源。它与春天无关。它将由maven或您正在使用的任何其他构建系统处理。
main/src , main/resources , test/src , test/resources
创建maven或gradle项目时,这些文件夹是标准文件。
答案 1 :(得分:1)
应用程序告诉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感知测试扩展的层次结构的一部分。
答案 2 :(得分:1)