Spring集成模仿企业集成模式,可以最好地认为是支持消息驱动体系结构。 Spring MVC的历史和起源是为类似于Struts的MVC模式提供解决方案,主要以线性方式公开由服务支持的模型和控制视图。 Spring MVC的核心之一是允许一个可以被JSP页面访问的模型的动态填充(View)。所有这些事情都是以Web App为导向并结束它们的。随着服务(Web,RESTful)的发展,Spring MVC填补了一个空白,并不断扩展以支持HTTP访问服务,尽管这是扩展其职责,而不是首先出现。与此同时,Spring Integration的设计目的在于处理消息和消息与服务的交互,而不依赖于访问的协议。要启用不同的协议,可以使用不同的端点来公开相同的服务。例如,我可以将我的crud服务构建在POJO中,通过Service Activator公开,现在可用于许多不同的协议,包括通过HTTP,WebServices,Twitter,XMPP聊天服务,RMI,TCP等的REST。
总之,春季MVC == HTTP访问,Spring集成==消息访问(从HTTP,文件,DB,等)
在Spring集成经由HTTP公开服务,使用HTTP端点。通常在请求/响应中(比如从数据库读取数据),你会想要使用<int-http:inbound-gateway/>
,它看起来像这样;
<int-http:inbound-gateway request-channel="request.channel" reply-channel="reply.channel"
path="/myService" supported-methods="GET"/>
<int:channel id="request.channel"/>
<int:service-activator input-channel="request.channel" ref="myService"/>
<int:channel id="output.channel"/>
(关键要记住的是以下几点...
<bean class="org.springframework.integration.http.inbound.UriPathHandlerMapping"/>
这有助于入网关的path
属性映射到的ServletDispatcher)