春天集成
5.4.6扩展Spring编程模型以支持众所周知的企业集成模式。Spring Integration在Spring基应用中启用轻量级消息,并通过声明适配器支持与外部系统的集成。这些适配器提供更高级别的抽象,对春天的支持,对远程处理,消息和调度。Spring Integration的主要目标是为构建企业集成解决方案提供一个简单的模型,同时保持对生产可维护,可测试代码至关重要的关注。
介绍
使用Spring框架鼓励开发人员使用接口编写代码,并使用依赖注入(DI)来提供一个Plain Old Java Object (POJO),其中包含执行任务所需的依赖项。Spring Integration将这个概念更进一步,其中pojo使用消息传递范式连接在一起,单个组件可能不知道应用程序中的其他组件。这样的应用程序是通过组装细粒度的可重用组件来构建的,以形成更高级别的功能。通过仔细的设计,可以对这些流进行模块化并在更高的级别上重用。
除了将细粒度组件连接在一起之外,Spring Integration还提供了多种通道适配器和网关,用于与外部系统通信。通道适配器用于单向集成(发送或接收);网关用于请求/应答场景(入站或出站)。要获得适配器和网关的完整列表,请参考参考文档。
Spring云流项目构建了Spring集成,其中Spring集成用作消息驱动微猎犬的引擎。
特性
大多数企业集成模式的实现
终点
频道(点对点和发布/订阅)
聚合器
过滤器
变压器
控制总线
......
与外部系统集成
ReST / HTTP
FTP / SFTP
推特
WebServices(肥皂和休息)
TCP / UDP.
JMS.
rabbitmq.
电子邮件
......
该框架具有广泛的JMX支持
将框架组件公开为mbean
适配器以获取MBeans的属性,调用操作,发送/接收通知
例子
在下面的“快速启动”应用程序中,您可以看到同一个网关接口被用于调用两个完全不同的服务实现。要生成并运行此程序,您将需要春天集成-WS和spring-integration-xml如上所述的模块。
公共类主要{公共静态void main(String ... args)抛出异常{ApplicationContext CTX = New ClassPathXmlApplicationContext(“context.xml”);//简单的服务Tempconverter转换器= CTX.GETBean(“SimpleGateway”,TempConverter.class);system.out.println(转换器.Fahrenheittocelcius(68.0f));// Web Service Converter = CTX.GetBean(“WSGateway”,TempConverter.class);system.out.println(转换器.Fahrenheittocelcius(68.0f));}}
公共界面Tempconverter {Float Fahrenheittocelcius(浮动Fahren);}
< !——Simple Service——> < int:链id =“wsChain输入通道”=“viaWebService”> < int:变压器表达式=”“& lt; FahrenheitToCelsius xmlns =“https://www.w3schools.com/xml/"祝辞& lt; Fahrenheit> XXX< / Fahrenheit> & lt; / FahrenheitToCelsius>“.replace(“XXX”,payload.toString())”/> < / int:链>
这里是使用相同的应用程序(Web服务部分)使用Java DSL(和春靴)。你需要的春天启动启动 - 集成依赖或Spring-Integration-Java-DSL直接如果您不使用Spring启动。如果您使用Spring Integration启动版本5.0,您不需要任何其他依赖项 - Java DSL包含在核心项目中:
@configuration @springbootapplication @IntegrationComponentsCan公共类应用程序{公共静态void main(String [] args){configurableApplicationContext CTX = springApplication.run(application.class,args);tempconverter转换器= ctx.getbean(tempconverter.class);system.out.println(转换器.Fahrenheittocelcius(68.0f));ctx.close();@MessagingGateway公共界面Tempconverter {@Gateway(RequestChannel =“Convert.Input”)浮动Fahrenheittocelcius(浮动Fahren);@Bean公共集成流Flow转换(){return f - > f .transform(payload - >“”+“”+有效载荷+“ fahrenheit>”+“ fahrenheittocelsius usius>”).enrichheaders(h - > h .header(webserviceheaders.soap_action,https://www.w3schools.com/xml/fahrenheittocelsius“)).Handle(new simplewebserviceoutboundgateway(“https://www.w3schools.com/xml/tempconvert.asmx”)).transform(transformers.xpath(“/ * [local-name()= \”fahrenheittocelsiusiusresponse \“+”/ *[local-name()= \“fahrenheittocelsiusiusiure \”)“));}}
文件
| 5.4.6当前的遗传算法 | 参考文档。 | API文档。 |
| 5.5.0-SNAPSHOT快照 | 参考文档。 | API文档。 |
| 5.5.0-RC1pre | 参考文档。 | API文档。 |
| 5.4.7-SNAPSHOT快照 | 参考文档。 | API文档。 |
| 5.3.8.BUILD-SNAPSHOT快照 | 参考文档。 | API文档。 |
| 5.3.7.Release.遗传算法 | 参考文档。 | API文档。 |
| 5.2.12.BUILD-SNAPSHOT快照 | 参考文档。 | API文档。 |
| 5.2.11.RELEASE遗传算法 | 参考文档。 | API文档。 |