Spring Integration is an extension of the Spring programming model that supports the well-known Enterprise Integration Patterns while building on Spring Framework's existing support for enterprise integration. It enables simple messaging within Spring-based applications and integrates with external systems via simple 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. Spring Integration is also about connecting disparate systems and enabling end-users to extend the framework to meet their custom integration requirements.