2

我有一些测试(我没有编写它们,我正在维护它们)使用 spring ContextConfiguration 注释来提供应用程序上下文:

@ContextConfiguration(locations = { "testCustomContext.xml" })
public class MyTest  {
}

无论如何,有几个问题。我对不指定 file:/ 或 classpath:/ 的 spring 自定义上下文位置不太熟悉。这是什么意思?此测试类路径上有很多具有该名称的资源。他们都加载了吗?如果没有,Spring 怎么知道要加载哪个?

其次,有没有办法以编程方式访问以这种方式连接的弹簧上下文?

即是否有一个静态 Spring Class 或 ThreadLocal 变量可以让我访问当前上下文?

在此先感谢您的帮助。

4

1 回答 1

1

您可以通过在测试类中自动装配来访问应用程序上下文:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyTest {

    @Autowired
    private ApplicationContext applicationContext;

    // class body...
}

至于你的第二个问题:

我对不指定 file:/ 或 classpath:/ 的 spring 自定义上下文位置不太熟悉。这是什么意思?此测试类路径上有很多具有该名称的资源。他们都加载了吗?如果没有,Spring 怎么知道要加载哪个?

来自 Java 文档:

普通路径(例如“context.xml”)将被视为与定义指定类的包相关的类路径资源。以斜杠开头的路径被视为绝对类路径位置,例如:“/org/springframework/whatever/foo.xml”。引用 URL 的路径(例如,前缀为 classpath:、file:、http: 等的路径)将不加改变地添加到结果中。

Resources您可以在文档中了解 Spring :http: //static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/resources.html

JavaDocs@ContextConfiguration也可以为您提供更多知识。

我鼓励你学习 Spring Docs。

于 2012-11-19T23:18:50.057 回答