领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多就在几天前,SpringSource Tool Suite™ (STS) 2.9.1 发布了。除了许多新功能之外,它还提供了一些对Spring Integration用户特别令人兴奋的功能。首先,最新的 STS 版本增加了对 Spring Integration 2.1 的支持,并改进了 Spring Integration 流的可视化功能。STS 现在支持所有最近添加的 Spring Integration 适配器,例如
此外,所有现有的 Spring Integration 适配器都已更新以支持新的可视化元素。Spring Integration 用户的另一个很棒的补充是 SpringSource Tool Suite 2.9.x 现在附带了 Spring Integration 的模板支持。因此,在使用Spring 模板项目向导创建新项目时,您现在可以在以下 3 个新的 Spring Integration 目标模板之间进行选择
[caption id="attachment_10681" align="aligncenter" width="342" caption="模板选择屏幕"][/caption]
此屏幕提供所有可用 Spring 模板的列表,包括前面提到的 3 个用于 Spring Integration 的新模板。如果您在模板名称前面看到那个小箭头 - 这意味着实际的模板尚未下载。下载完成后,模板将缓存在您的计算机上,除非您按下刷新按钮并且远程提供了新版本的模板,否则您无需再次下载模板文件。
让我们选择模板Spring Integration 项目(独立) - 简单并按下下一步。如果模板尚未下载,您将看到以下弹出窗口
继续并下载模板后,将显示项目设置屏幕。您必须在那里提供项目名称以及某些属性,以便轻松地将您新创建的项目部署到 Maven 存储库。
[caption id="attachment_10687" align="aligncenter" width="420" caption="项目设置屏幕"][/caption]
事实上,除了创建 Eclipse 特定的项目文件外,此模板向导还将生成一个项目pom.xml文件,这将使该项目也易于在 STS 之外使用(例如,作为您持续集成流程的一部分使用 Jenkins之类的工具)。因此,除了项目名称外,您还必须提供groupId、artifactId和version属性。最后,您还需要定义一个顶级(基本)包,相关源文件将位于该包下。
按下“完成”后,将创建项目,并且它应该在 STS 的包资源管理器窗口左侧列出。此时,您拥有了一个功能齐全的 Spring Integration 项目。
除了使用 STS 之外,您还可以使用Maven从命令行非常简单地启动该项目。只需转到项目目录并执行
$ mvn clean package exec:java
此命令将清除target构建目录,编译和打包应用程序,并使用Exec Maven Plugin执行应用程序。应用程序将像在 STS 中一样启动。按“q”将退出应用程序。
为了实现这一点,使用了 Spring Integration。但是,如果您查看引导 Spring 应用程序上下文的Main 类的详细信息,您会注意到它本身没有对 Spring Integration 的任何引用。所有主类基本上做的就是从 Spring 应用程序上下文中检索“StringConversionService”接口的一个实例。但是,该接口由 Spring Integration 的网关用于捕获输入的字符串并将其转发到请求通道。
项目的应用程序上下文 XML 文件位于META-INF/spring/integration下。如您所见,该应用程序由一个非常基本的 Spring Integration 流组成。我们从一个简单的网关开始,该网关使用前面提到的StringConversionService接口。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-2.1.xsd">
<int:gateway id="gateway"
default-request-timeout="5000"
default-reply-timeout="5000"
default-request-channel="requestChannel"
default-reply-channel="replyChannel"
service-interface="org.springintegration.demo.service.StringConversionService">
<int:method name="convertToUpperCase"/>
</int:gateway>
<int:service-activator id="serviceActivator"
input-channel="requestChannel"
output-channel="replyChannel"
expression="payload.toUpperCase()"/>
<int:channel id="replyChannel"/>
<int:channel id="requestChannel"/>
</beans>
定义了两个消息通道。第一个通道将包含输入字符串的消息路由到服务激活器。服务激活器本身将使用 Spring 表达式语言 (SpEL) 将输入消息的有效负载转换为大写。通过回复通道,大写字符串将返回给调用方并打印到命令行。
在现实世界的场景中,服务激活器很可能引用另一个服务 bean 以执行一些非平凡的业务逻辑,例如
…
<int:service-activator id="serviceActivator"
input-channel="requestChannel"
output-channel="replyChannel"
ref="businessService"
method="myMethodToExecute"/>
…
此外,请注意,我们在此模板中使用服务激活器是为了说明其他基于 Java 的业务服务的执行。如果您的目标是纯粹转换 Spring Integration 消息有效负载,请考虑使用转换器,在语义上它可能更合适。
这是一个非常简单的用例,但它为您提供了一个很好的起点来实现您自己的 Spring Integration 组件。我们预计这些模板将大大降低学习和体验在您自己的项目中使用 Spring Integration 的好处的入门门槛。如果您有任何疑问,我们希望收到您的来信。有关您可能遇到的任何问题,请访问forum.springsource.org上的 Spring Integration 论坛。有关 Spring Integration 的更多一般信息,请访问我们的项目网站:http://www.springintegration.org/。