对应用程序上下文和上下文位置的编程访问

时间:2012-11-19 23:15:42

标签: java spring applicationcontext spring-test

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

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

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

第二,有没有办法以编程方式访问以这种方式连接的spring上下文?

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您只需在测试类中自动装配即可访问应用程序上下文:

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

    @Autowired
    private ApplicationContext applicationContext;

    // class body...
}

至于你的第二个问题:

  

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

来自Java Docs:

  

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

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

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

我鼓励你学习Spring Docs。