Sök…


Anmärkningar

Det här avsnittet ger en översikt över vad vår-integration är och varför en utvecklare kanske vill använda den.

Det bör också nämna alla stora ämnen inom vårintegrationen och koppla till de relaterade ämnena. Eftersom dokumentationen för vårintegrering är ny kan du behöva skapa initialversioner av relaterade ämnen.

versioner

Version Utgivningsdatum
4.3.x 2016/11/07
4.2.x 2016/11/07
4.1.x 2016/07/25
4.0.x 2016/07/26
3.0.x 2015/10/27
2.2.x 2016/01/27
2.1.x 2013/06/10
2.0.x 2013/04/11
1.0.x 2010-04-16

Installation eller installation

Det bästa sättet att komma igång med Spring-Integration i ditt projekt är med ett beroendehanteringssystem, som gradle.

dependencies {
    compile 'org.springframework.integration:spring-integration-core:4.3.5.RELEASE'
}

Nedan är ett mycket enkelt exempel med gatepoints , servo-aktivatormeddelandets slutpunkter.

//these annotations will enable Spring integration and scan for components
@Configuration
@EnableIntegration
@IntegrationComponentScan
public class Application {
    //a channel has two ends, this Messaging Gateway is acting as input from one side of inChannel
    @MessagingGateway
    interface Greeting {
        @Gateway(requestChannel = "inChannel")
        String greet(String name);
    }

    @Component
    static class HelloMessageProvider {
        //a service activator act as a handler when message is received from inChannel, in this example, it is acting as the handler on the output side of inChannel
        @ServiceActivator(inputChannel = "inChannel")
        public String sayHello(String name) {
            return "Hi, " + name;
        }
    }

    @Bean
    MessageChannel inChannel() {
        return new DirectChannel();
    }

    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);
        Greeting greeting = context.getBean(Greeting.class);
        //greeting.greet() send a message to the channel, which trigger service activitor to process the incoming message
        System.out.println(greeting.greet("Spring Integration!"));
    }
}

Den visar strängen Hi, Spring Integration! i konsolen.

Naturligtvis ger Spring Integration också konfigurering av xml-stil. För exemplet ovan kan du skriva en sådan följande xml-konfigurationsfil.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:int="http://www.springframework.org/schema/integration"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/integration
        http://www.springframework.org/schema/integration/spring-integration.xsd">
    <int:gateway default-request-channel="inChannel"
                 service-interface="spring.integration.stackoverflow.getstarted.Application$Greeting"/>
    <int:channel id="inChannel"/>
    <int:service-activator input-channel="inChannel" method="sayHello">
        <bean class="spring.integration.stackoverflow.getstarted.Application$HelloMessageProvider"/>
    </int:service-activator>
</beans>

För att köra applikationen med konfigurationsfilen xml, bör du ändra kodens new AnnotationConfigApplicationContext(Application.class) i Application till new ClassPathXmlApplicationContext("classpath:getstarted.xml") . Och kör den här applikationen igen, du kan se samma utgång.

Generisk in- och utgående kanaladapter

Kanaladapter är en av meddelandets slutpunkter i Spring Integration. Det används för enkelriktat meddelandeflöde. Det finns två typer av kanaladapter:

Inkommande adapter : ingångssidan av kanalen. Lyssna eller läs aktivt meddelande.

Utgående adapter : utgångssidan av kanalen. Skicka meddelande till Java-klass eller externt system eller protokoll.

ange bildbeskrivning här

  • Källkod.

    public class Application {
        static class MessageProducer {
            public String produce() {
                String[] array = {"first line!", "second line!", "third line!"};
                return array[new Random().nextInt(3)];
            }
        }
    
        static class MessageConsumer {
            public void consume(String message) {
                System.out.println(message);
            }
        }
    
        public static void main(String[] args) {
            new ClassPathXmlApplicationContext("classpath:spring/integration/stackoverflow/ioadapter/ioadapter.xml");
        }
    }
    
  • Konfigurationsfil för XML-stil:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:int="http://www.springframework.org/schema/integration"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd">
        <int:channel id="channel"/>
        <int:inbound-channel-adapter id="inAdapter" channel="channel" method="produce">
            <bean class="spring.integration.stackoverflow.ioadapter.Application$MessageProducer"/>
            <int:poller fixed-rate="1000"/>
        </int:inbound-channel-adapter>
        <int:outbound-channel-adapter id="outAdapter" channel="channel" method="consume">
            <bean class="spring.integration.stackoverflow.ioadapter.Application$MessageConsumer"/>
        </int:outbound-channel-adapter>
    </beans>
    
  • Meddelandeflöde

    • inAdapter : en inkommande kanaladapter. Invoke Application$MessageProducer.produce metod varje 1 sekund ( <int:poller fixed-rate="1000"/> ) och skicka den returnerade strängen som meddelande till kanalen channel .
    • channel : kanal för att överföra meddelande.
    • outAdapter : en utgående kanaladapter. När meddelande nådde på kanal channel , kommer denna adapter emot meddelandet och sedan skicka den till Application$MessageConsumer.consume metod som skriver ut meddelandet på konsolen.
    • Så du kan observera att dessa slumpmässiga valsträngar kommer att visas på konsolen varje 1 sekund.

Enkelt ekoexempel med Spring-Integration-Stream

ange bildbeskrivning här

Java-kod:

public class StdioApplication {
    public static void main(String[] args) {
        new ClassPathXmlApplicationContext("classpath:spring/integration/stackoverflow/stdio/stdio.xml");
    }
}

Xml-konfigurationsfil

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:int="http://www.springframework.org/schema/integration"
       xmlns:int-stream="http://www.springframework.org/schema/integration/stream"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/integration/stream
       http://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd
       http://www.springframework.org/schema/integration
       http://www.springframework.org/schema/integration/spring-integration.xsd">
    <int:channel id="channel"/>
    <int-stream:stdin-channel-adapter id="stdin" channel="channel">
        <int:poller fixed-rate="1000"/>
    </int-stream:stdin-channel-adapter>
    <int-stream:stdout-channel-adapter id="stdout" channel="channel"/>
</beans>

Detta är ett ekoexempel. När du kör denna Java-applikation kan du mata in någon sträng och sedan visas den på konsolen.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow