领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多我们很高兴地宣布 Spring Integration 4.0 的最终里程碑版本和 3.0.x 系列的下一个维护版本。3.0.2.RELEASE 包含少量针对 3.0 版本 的重要修复。我们鼓励 Spring Integration 3.0 用户尽快升级到此版本。请参阅 3.0.2 发行说明 和 项目页面 以了解更多信息。
Spring Integration 4.0 是该框架的下一代版本,它现在基于新的 Spring Framework 4.0 消息模块。请参阅 迁移指南,了解有关将应用程序从 Spring Integration 3.0 迁移到 4.0 的信息。
Spring Integration 4.0 发行的另一个主要目标是为框架添加改进的 Java 和注释配置功能;让我们重点介绍其中一些功能……
@EnableIntegration
Spring Integration 提供许多环境和内置 bean 来支持运行时 企业集成模式 和消息基础设施。使用 XML 配置,它们会根据需要由 NamespaceHandler
自动声明。在纯 Java 配置中,没有命名空间处理程序,需要另一种机制来设置集成环境。为此目的添加了 @EnableIntegration
注释。它类似于 spring-webmvc
中的 @EnableWebMvc
或 Spring Data 中的 @Enable*Repositories
注释,并且应该与至少一个类上的 @Configuration
注释一起放置。
注意:ApplicationContext
中只需要一个 @EnableIntegration
注释。有了此注释,您可以开始从 Spring @Configuration
类配置集成流程。
@Configuration
@EnableIntegration
public static class MyConfiguration {
@Bean
public MessageChannel fileWritingChannel() {
return new DirectChannel();
}
@Bean
public FileWritingMessageHandler fileWritingMessageHandler() {
return new FileWritingMessageHandler(this.outputDir);
}
@Bean
public ConsumerEndpointFactoryBean fileWritingEndpoint() {
ConsumerEndpointFactoryBean endpoint = new ConsumerEndpointFactoryBean();
endpoint.setHandler(this.fileWritingMessageHandler());
endpoint.setInputChannel(this.fileWritingChannel());
return endpoint;
}
}
当然,使用组件扫描,可以使用现有的 Spring Integration 配置注释(@MessageEndpoint
、@ServiceActivator
、@Router
、@Filter
等)来定义流程。请参阅本文后面关于 Spring Boot 应用程序的示例。
@MessagingGateway
另一个有用且重要的消息组件是 Messaging Gateway
。使用 XML,我们使用 <int:gateway/>
组件将接口的实现提供为消息流的网关。使用 Spring Integration 4.0,您可以通过使用新引入的 @MessagingGateway
注释来避免 XML 配置。此注释提供与 <int:gateway/>
元素相同的属性,并放置在网关的服务接口上。
@MessagingGateway(defaultRequestChannel = "gatewayChannel",
defaultHeaders = @GatewayHeader(name = "foo", value = "FOO"))
public interface MyGateway {
@Gateway(headers = @GatewayHeader(name = "calledMethod",
expression = "#gatewayMethod.name"))
String echo(String payload);
}
重要提示:由于此组件不会自动对 Spring 容器可见,并且默认的 @ComponentScan
不适用于接口,因此引入了另一个新注释 @IntegrationComponentScan
。此注释类似于 Spring Data 中的 @Enable*Repositories
,并提供选项来配置 basePackages
属性以扫描集成组件,并且应与 @Configuration
一起放置。
Spring Boot @EnableAutoConfiguration
利用 SpringFactoriesLoader
机制,Spring Integration 基础设施也可通过 Spring Boot @EnableAutoConfiguration
注释获得。只需将 Spring Integration 4.0 添加到类路径并使用 Spring Boot 自动配置功能。
这是一个非常简单的 Spring Boot 应用程序
@EnableAutoConfiguration // enables integration infrastructure
@IntegrationComponentScan // looks for gateways
@ComponentScan // looks for Spring Beans
public class Integration {
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext ctx = SpringApplication.run(Integration.class, args);
String reply = ctx.getBean(GW.class).sendAndReceive("foo");
System.out.println(reply);
ctx.close();
}
@MessagingGateway(defaultRequestChannel="in")
public interface GW {
String sendAndReceive(String payload);
}
@MessageEndpoint
public static class MyService {
@ServiceActivator(inputChannel="in")
public String foo(String payload) {
return payload.toUpperCase();
}
}
}
其他更改
此外,还引入了其他有用的 Java 和注释配置组件:@EnableMessageHistory
、@EnablePublisher
、@EnableIntegrationMBeanExport
、@GlobalChannelInterceptor
、@IntegrationConverter
等。有关新功能和更改的信息,请参阅 Spring Integration 4.0 里程碑版本 4 的 新增功能 和 发行说明。
有关 Spring Integration 4.0 中所有更改的完整列表,请参阅每个里程碑的发行说明。
(第一个里程碑只是重构了 3.0 代码以使用 spring-messaging
类)。
4.0.0.M4 版本现已在 Spring 里程碑存储库中提供。
我们期待收到您的评论和反馈:Spring 论坛、StackOverflow(spring-integration
标签)、Spring JIRA!
预告