领先一步
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 Template Project Wizard创建新项目时,您现在可以在以下 3 个新的面向 Spring Integration 的模板之间进行选择:
[caption id="attachment_10681" align="aligncenter" width="342" caption="模板选择屏幕"]
[/caption]
此屏幕提供所有可用的 Spring 模板的列表,包括之前提到的 3 个新的 Spring Integration 模板。如果在模板名称前面看到小箭头,则表示实际模板尚未下载。下载后,模板将缓存在您的计算机上,您无需再次下载模板文件,除非您按刷新按钮并且远程有新版本的模板可用。
让我们选择模板 Spring Integration Project (Standalone) - Simple,然后按“下一步”。如果模板尚未下载,您将看到以下弹出窗口:
一旦您继续并且模板已下载,您将看到项目设置屏幕。在那里,您需要提供项目名称和某些属性,以便轻松将新创建的项目部署到 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 本身。该 Main 类基本上所做的是从 Spring 应用程序上下文中检索“StringConversionService”接口的实例。然而,这个接口被一个 Spring Integration Gateway 用来捕获输入的字符串并将其转发到请求通道。
项目的应用程序上下文 XML 文件位于 META-INF/spring/integration 下。正如您所见,该应用程序由一个非常基本的 Spring Integration 流程组成。我们从一个简单的 Gateway 开始,该 Gateway 使用前面提到的 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>
定义了 2 个消息通道。第一个通道将包含输入字符串的消息路由到 service-activator。service activator 本身将使用 Spring 表达式语言 (SpEL) 将输入消息的 payload 转换为大写。通过回复通道,大写字符串会返回给调用者,并打印到命令行。
在实际场景中,Service Activator 最有可能引用另一个服务 bean 以执行一些非平凡的业务逻辑,例如:
…
<int:service-activator id="serviceActivator"
input-channel="requestChannel"
output-channel="replyChannel"
ref="businessService"
method="myMethodToExecute"/>
…
此外,请注意,我们在本模板中使用 Service Activator 来说明执行其他基于 Java 的业务服务。如果您的目标是纯粹转换 Spring Integration 消息 Payload,也请考虑使用Transformer,它在语义上可能更合适。
这是一个非常简单的用例,但它为您实现自己的 Spring Integration 组件提供了一个很好的起点。我们希望这些模板将大大降低学习和体验在您自己的项目中使用 Spring Integration 优势的门槛。如果您有任何疑问,我们很乐意听取您的意见。对于您可能有的任何疑问,请访问 Spring Integration 论坛:forum.springsource.org。有关 Spring Integration 的一般信息,请访问我们的项目网站:http://www.springintegration.org/。