我可以在一个应用程序中使用Spring MVC和Spring WS吗?

Roh*_*til 18 spring-ws spring-mvc

基本上,有一个后端应用程序可以公开SOAP和RESTful服务.

我已决定将Spring WS 1.5.8用于SOAP服务,并将
Spring MVC 3.0用于RESTful服务,因为这是一项新功能.

在阅读了一些关于Spring WS(我是新手!)之后,我们在Spring WS的web.xml中声明了一个"MessageDispatcherServlet",它是一个前端控制器.

对于Spring MVC,我们应该在web.xml中声明一个"DispatcherServlet",它也是一个前端控制器.

对于这两个servlet,我们在web.xml中有不同的servlet声明.

即对于Spring WS我有

  <servlet>
  <servlet-name>springsoap</servlet-name>
  <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
  <servlet-name>springsoap</servlet-name>
  <url-pattern>/soapservices/*</url-pattern>
  </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

对于Spring MVC(RESTful),我有

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/restservices/*</url-pattern>
    </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

因此我应该使用2个配置文件?? 一个名为springmvc-servlet.xml,另一个名为springsoap-servlet.xml?

可以这样做吗?

ska*_*man 17

是的,这很好.你把MVC相关的东西放在一个,把WS的东西放到另一个东西里.

如果他们需要共享服务,那么最好使用ContextLoaderListenerin 来声明共享上下文web.xml,它定义了应该包含共享bean的第三个上下文(请参阅文档,例如如何设置它).

它也是值得的,MessageDispatcherServlet只是方便的标准组件DispatcherServlet加上一些其他组件.您可以自己声明这些组件并使用a DispatcherServlet,但这非常繁琐.

  • 谢谢你!:) 我知道如何使用 ContextLoaderListener 设置 applicationContext.xml .. (2认同)