Spring 定义多个webAppConfig(Jetty)

Spring 定义多个webAppConfig(Jetty),spring,jetty,web.xml,applicationcontext,Spring,Jetty,Web.xml,Applicationcontext,引言 目前我正在使用一个基于Spring的webapp,其中我们有两种不同的DAO bean实现: 一个真正的数据库访问实现(基于JDBC从数据库检索数据)。 一种测试实现(其中每个方法都返回假数据) 这些实现使用applicationContext文件映射(我们有两个,上面描述的每种情况一个)。使用其中一个的方法是使用两个不同的web.xml文件,第二个文件(例如“web test.xml”)包含如下内容: <context-param> <param-name>

引言
目前我正在使用一个基于Spring的webapp,其中我们有两种不同的DAO bean实现:

  • 一个真正的数据库访问实现(基于JDBC从数据库检索数据)。
  • 一种测试实现(其中每个方法都返回假数据)

    这些实现使用applicationContext文件映射(我们有两个,上面描述的每种情况一个)。使用其中一个的方法是使用两个不同的web.xml文件,第二个文件(例如“web test.xml”)包含如下内容:

    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>classpath:{...}/applicationContext-test.xml</param-value>
    </context-param>
    
    
    上下文配置位置
    类路径:{…}/applicationContext-test.xml
    
    在jetty插件的配置中,我们可以覆盖web.xml:

    <webAppConfig>
     <contextPath>/${projectName}-test</contextPath>
     <overrideDescriptor>${basedir}/web/WEB-INF/web-test.xml</overrideDescriptor>
    </webAppConfig>
    
    
    /${projectName}-测试
    ${basedir}/web/web-INF/web-test.xml
    
    这对于使用一个applicationContext或另一个很好,但是我们需要在集成测试期间同时使用这两个,因为有些测试需要DB访问,而另一些测试需要使用假数据

    问题
    是否可以定义多个WebAppConfig,以便根据使用的上下文路径使用“web.xml”或“web test.xml”?
    我们希望区分访问不同URL的两种情况,例如:
  • localhost:8080/myWebApp(用于真正的数据库访问)
  • localhost:8080/myWebApp测试(用于假数据模拟)

    我们在pom.xml上尝试了类似的方法:

    <webAppConfig>
     <contextPath>/${projectName}</contextPath>
    </webAppConfig>
    
    <webAppConfig>
     <contextPath>/${projectName}-test</contextPath>
     <overrideDescriptor>${basedir}/web/WEB-INF/web-int-test.xml</overrideDescriptor>
    </webAppConfig>
    
    
    /${projectName}
    /${projectName}-测试
    ${basedir}/web/web-INF/web-int-test.xml
    
    但结果是webAppConfig被第二个定义覆盖。 是否有一种方法可以通过同一Jetty实例访问这两个上下文


    提前感谢您的帮助。

    很抱歉延迟回复。是的,它必须与我们需要在构建的集成测试阶段运行测试的时间同时进行。我认为您不能这样做,我的意思是,在同一Jetty实例上同时访问两个上下文。