我有一些测试(我没有编写它们,我正在维护它们)使用spring ContextConfiguration注释来提供应用程序上下文:
@ContextConfiguration(locations = { "testCustomContext.xml" })
public class MyTest {
}
无论如何,有几个问题。我不熟悉没有指定file:/或classpath:/的spring自定义上下文位置。这是什么意思?此测试类路径上有许多具有该名称的资源。它们都装满了吗?如果没有,Spring如何知道要加载哪个?
第二,有没有办法以编程方式访问以这种方式连接的spring上下文?
即。是否有一个静态的Spring Class或ThreadLocal变量可以让我访问当前的上下文?
提前感谢您的帮助。
答案 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 Resources
:http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/resources.html
@ContextConfiguration
的JavaDocs也可以为您提供更多知识。
我鼓励你学习Spring Docs。