答案 0 :(得分:7)
答案 1 :(得分:3)
好吧,最后我能够做到如下(基于 spring roo 生成的应用程序):
我将applicationContex.xml文件放在目录中:
src/main/resources/META-INF/spring
并在web.xml中:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>
并在单元测试类中:
@ContextConfiguration(locations = { "classpath:/META-INF/spring/applicationContext.xml" })
答案 2 :(得分:1)
我将应用程序上下文文件保存在(src / main / resources)中并添加类路径后缀以从test或web.xml访问它们
要从(web.xml)访问位于src / main / resources中的上下文文件,请将此配置添加到web.xml
<context-param>
<description>
Context parameters for Spring ContextLoaderListener
</description>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
这是我的测试配置的样子
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
@Transactional
public class MyTest
{
}
答案 3 :(得分:1)
另一种解决方案是将applicationContext添加到main / src / resources。
还将(第二个)应用程序上下文(对于servlet)添加到META-INF,只有一行从类路径导入第一个上下文
<import resource="classpath:/mypackage/my-servlet.xml"/>
然后您可以将第一个导入测试,并且没有重复的定义。