Spring Integration


Extends the Spring programming model to support the well-known Enterprise Integration Patterns. Spring Integration enables lightweight messaging within Spring-based applications and supports integration with external systems via declarative adapters. Those adapters provide a higher-level of abstraction over Spring’s support for remoting, messaging, and scheduling. Spring Integration’s primary goal is to provide a simple model for building enterprise integration solutions while maintaining the separation of concerns that is essential for producing maintainable, testable code.


Using the Spring Framework encourages developers to code using interfaces and use dependency injection (DI) to provide a Plain Old Java Object (POJO) with the dependencies it needs to perform its tasks. Spring Integration takes this concept one step further, where POJOs are wired together using a messaging paradigm and individual components may not be aware of other components in the application. Such an application is built by assembling fine-grained reusable components to form a higher level of functionality. WIth careful design, these flows can be modularized and also reused at an even higher level.

In addition to wiring together fine-grained components, Spring Integration provides a wide selection of channel adapters and gateways to communicate with external systems. Channel Adapters are used for one-way integration (send or receive); gateways are used for request/reply scenarios (inbound or outbound). For a full list of adapters and gateways, refer to the reference documentation.

The Spring Cloud Stream project builds on Spring Integration, where Spring Integration is used as an engine for message-driven microservices.


  • Implementation of most of the Enterprise Integration Patterns

  • Endpoint

  • Channel (Point-to-point and Publish/Subscribe)

  • Aggregator

  • Filter

  • Transformer

  • Control Bus

  • Integration with External Systems



  • Twitter

  • WebServices (SOAP and ReST)


  • JMS

  • RabbitMQ

  • Email

  • The framework has extensive JMX support

  • Exposing framework components as MBeans

  • Adapters to obtain attributes from MBeans, invoke operations, send/receive notifications

Quick start

Bootstrap your application with Spring Initializr.


Each Spring project has its own; it explains in great details how you can use project features and what you can achieve with them.
5.0.5 CURRENT GA Reference Doc. API Doc.
5.1.0 SNAPSHOT Reference Doc. API Doc.
5.0.6 SNAPSHOT Reference Doc. API Doc.
4.3.17 SNAPSHOT Reference Doc. API Doc.
4.3.16 GA Reference Doc. API Doc.

A few examples to try out: