简介
目前我正在使用一个基于 Spring 的 webapp,其中我们有两个不同的 DAO bean 实现:
这些实现是使用 applicationContext 文件映射的(我们有两个,上面描述的每种情况一个)。使用其中一个的方法是拥有两个不同的 web.xml 文件,并让第二个文件(例如“web-test.xml”)包含以下内容:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:{...}/applicationContext-test.xml</param-value>
</context-param>
在jetty插件的配置中,我们可以覆盖web.xml:
<webAppConfig>
<contextPath>/${projectName}-test</contextPath>
<overrideDescriptor>${basedir}/web/WEB-INF/web-test.xml</overrideDescriptor>
</webAppConfig>
这适用于使用一个 applicationContext或另一个,但我们需要在集成测试期间同时使用这两者,因为一些测试需要数据库访问,而其他测试需要使用假数据。
问题
是否可以定义多个 webAppConfigs,以便我们可以根据使用的 contextPath 使用“web.xml”或“web-test.xml”?
我们想区分访问不同 url 的两种情况,例如:
我们在 pom.xml 上尝试了这样的事情:
<webAppConfig>
<contextPath>/${projectName}</contextPath>
</webAppConfig>
<webAppConfig>
<contextPath>/${projectName}-test</contextPath>
<overrideDescriptor>${basedir}/web/WEB-INF/web-int-test.xml</overrideDescriptor>
</webAppConfig>
但结果是 webAppConfig 被第二个定义覆盖。有没有办法通过同一个 Jetty 实例访问这两个上下文?
预先感谢您的帮助。