Spring Integration
Расширяет модель программирования в Spring, благодаря поддержке Enterprise Integration Patterns. Spring Integration включает в себя легковесный обмен сообщениями между Spring-приложениями через событийно-управляемые адаптеры. Эти адаптеры обеспечивают высокоуровневую абстракцию над возможностями Spring, такими как удаленное взаимодействие, обмен сообщениями и выполнение по расписанию. Первичной целью Spring Integration является предоставление простой модели создания интеграционных бизнес-решений, сохраняя разделение задач, что необходимо для написания поддерживаемого и тестируемого кода.
Быстрый старт

Введение

Использование Spring Framework стимулирует разработчиков к использованию интерфейсов в коде и внедрения зависимостей(DI), обеспечивая POJO-объекты необходимыми для выполнения поставленной задачи зависимостями. Spring Integration развивает эту концепцию на шаг дальше, где POJO-объекты связаны друг с другом с помощью парадигмы обмена сообщениями и отдельные компоненты могут быть не знать о существовании других компонентов в приложении. Такое приложение построено путем соединения мелких повторно используемых компонентов, чтобы сформировать высокий уровень функциональности. При тщательном проектировании, эти потоки могут быть модульными, а также повторно использованы на на более высоком уровене.

В дополнение к соединению вместе мелких компонентов, Spring Integration предоставляет широкий выбор адаптеров каналов и шлюзов для связи с внешними системами. Адаптеры каналов используются для односторонней интеграции (отправлять или получать); шлюзы используются для запроса/ответа сценариев (входящих и исходящих). Для получения полного списка адаптеров и шлюзов, обратитесь к справочной документации.

Spring XD основано на Spring Integration, где Spring Integration модули собраны в XD Stream.

Возможности

  • Реализация большинства Enterprise Integration Patterns
    1. Endpoint
    2. Channel (Point-to-point and Publish/Subscribe)
    3. Aggregator
    4. Filter
    5. Transformer
    6. Control Bus
    7. Другие...
  • Интеграция с внешними системами
    1. ReST/HTTP
    2. FTP/SFTP
    3. Twitter
    4. WebServices (SOAP and ReST)
    5. TCP/UDP
    6. JMS
    7. RabbitMQ
    8. Email
    9. Другие...
  • Расширенная поддержка JMX
    1. Представление компонентов фреймворка как MBeans
    2. Адаптеры получают атрибуты из MBeans, запускают операции, отправляют/получают уведомления

Быстрый старт

Загрузка
Maven
Gradle

Рекомендованный путь для начального использования spring-integration в вашем проекте с использованием системы управления зависимостями – скопировать фрагмент кода ниже и вставить в вашу конфигурацию сборки. Нужна помощь? Ознакомьтесь с нашими руководствами по созданию приложений с использованием Maven и Gradle.

<dependencies>
    <dependency>
        <groupId>org.springframework.integration</groupId>
        <artifactId>spring-integration-core</artifactId>
        <version>4.0.4.RELEASE</version>
    </dependency>
</dependencies>

В приложении на примере ниже вы можете увидеть, интерфейс шлюза используется для выполнения двух совершенно совершенно разных его реализаций. Чтобы собрать и запустить это приложение, вам понадобятся spring-integration-ws и spring-integration-xml модули, описанные выше.

public class Main {

    public static void main(String... args) throws Exception {
        ApplicationContext ctx =
            new ClassPathXmlApplicationContext("context.xml");

        // Simple Service
        TempConverter converter =
            ctx.getBean("simpleGateway", TempConverter.class);
        System.out.println(converter.fahrenheitToCelcius(68.0f));

        // Web Service
        converter  = ctx.getBean("wsGateway", TempConverter.class);
        System.out.println(converter.fahrenheitToCelcius(68.0f));
    }
}
public interface TempConverter {

    float fahrenheitToCelcius(float fahren);

}
<!-- Simple Service -->
<int:gateway id="simpleGateway"
    service-interface="foo.TempConverter"
    default-request-channel="simpleExpression" />

<int:service-activator id="expressionConverter"
    input-channel="simpleExpression"
    expression="(payload - 32) / 9 * 5"/>

<!-- Web Service -->

<int:gateway id="wsGateway" service-interface="foo.TempConverter"
    default-request-channel="viaWebService" />

<int:chain id="wsChain" input-channel="viaWebService">
    <int:transformer
        expression="'&lt;FahrenheitToCelsius xmlns=''http://tempuri.org/''&gt;&lt;Fahrenheit&gt;XXX&lt;/Fahrenheit&gt;&lt;/FahrenheitToCelsius&gt;'.replace('XXX', payload.toString())" />
    <int-ws:header-enricher>
        <int-ws:soap-action value="http://tempuri.org/FahrenheitToCelsius"/>
    </int-ws:header-enricher>
    <int-ws:outbound-gateway
        uri="http://www.w3schools.com/webservices/tempconvert.asmx"/>
    <int-xml:xpath-transformer
        xpath-expression="/*[local-name()='FahrenheitToCelsiusResponse']/*[local-name()='FahrenheitToCelsiusResult']"/>
</int:chain>
comments powered by Disqus
Spring Integration
Версия
Документация
Примеры проектов
Расширения
Ресурсы