使用STS创建Spring Integration项目

工程 | Gunnar Hillert | 2012年4月9日 | ...

就在几天前,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 目标模板之间进行选择
  • Spring Integration 项目(独立) - 简单
  • Spring Integration 项目(独立) - 文件
  • Spring Integration 项目(War
简单模板创建一个基本的 Spring Integration 项目,该项目作为独立的 Java 应用程序运行,仅使用核心 Spring Integration 组件。为了说明文件轮询功能,文件模板使用其他组件来轮询文件目录以及路由这些文件。最后,War 模板允许用户轻松创建旨在在 servlet 容器(例如 Tomcat)中作为 WAR 部署的一部分运行的基本 Spring Integration 项目。出于说明目的,War 模板使用 Spring Integration 的Twitter 适配器

创建新的 Spring Integration 项目

要使用 STS Spring 模板启动新项目,请在主菜单中转到文件,然后转到新建,然后转到Spring 模板项目。接下来将显示模板选择屏幕

 

[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之类的工具)。因此,除了项目名称外,您还必须提供groupIdartifactIdversion属性。最后,您还需要定义一个顶级(基本)包,相关源文件将位于该包下。

按下“完成”后,将创建项目,并且它应该在 STS 的包资源管理器窗口左侧列出。此时,您拥有了一个功能齐全的 Spring Integration 项目。

运行项目

在您声明的基本包下,您将找到一个Main类,它允许您执行 Spring Integration 应用程序。在 STS 中,您可以通过右键单击Main类,然后选择“以...方式运行”-->Java 应用程序来执行它。应用程序启动,您将看到以下控制台输出

Console Output

 

除了使用 STS 之外,您还可以使用Maven从命令行非常简单地启动该项目。只需转到项目目录并执行

$ mvn clean package exec:java

此命令将清除target构建目录,编译和打包应用程序,并使用Exec Maven Plugin执行应用程序。应用程序将像在 STS 中一样启动。按“q”将退出应用程序。

Spring Integration 配置

此应用程序的作用是允许您通过命令行输入一些自由格式的文本,然后将其转换为大写表示形式并打印到控制台。

为了实现这一点,使用了 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/

资源

获取 Spring 时事通讯

与 Spring 时事通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部