| This version is still in development and is not considered stable yet. For the latest stable version, please use Spring Integration 6.5.3! | 
Annotation-Based Configuration
The following example from the samples repository shows some of the configuration options available when you use annotations instead of XML:
@EnableIntegration (1)
@IntegrationComponentScan (2)
@Configuration
public static class Config {
    @Value(${some.port})
    private int port;
    @MessagingGateway(defaultRequestChannel="toTcp") (3)
    public interface Gateway {
        String viaTcp(String in);
    }
    @Bean
    @ServiceActivator(inputChannel="toTcp") (4)
    public MessageHandler tcpOutGate(AbstractClientConnectionFactory connectionFactory) {
        TcpOutboundGateway gate = new TcpOutboundGateway();
        gate.setConnectionFactory(connectionFactory);
        gate.setOutputChannelName("resultToString");
        return gate;
    }
    @Bean (5)
    public TcpInboundGateway tcpInGate(AbstractServerConnectionFactory connectionFactory)  {
        TcpInboundGateway inGate = new TcpInboundGateway();
        inGate.setConnectionFactory(connectionFactory);
        inGate.setRequestChannel(fromTcp());
        return inGate;
    }
    @Bean
    public MessageChannel fromTcp() {
        return new DirectChannel();
    }
    @MessageEndpoint
    public static class Echo { (6)
        @Transformer(inputChannel="fromTcp", outputChannel="toEcho")
        public String convert(byte[] bytes) {
            return new String(bytes);
        }
        @ServiceActivator(inputChannel="toEcho")
        public String upCase(String in) {
            return in.toUpperCase();
        }
        @Transformer(inputChannel="resultToString")
        public String convertResult(byte[] bytes) {
            return new String(bytes);
        }
    }
    @Bean
    public AbstractClientConnectionFactory clientCF() { (7)
        return new TcpNetClientConnectionFactory("localhost", this.port);
    }
    @Bean
    public AbstractServerConnectionFactory serverCF() { (8)
        return new TcpNetServerConnectionFactory(this.port);
    }
}| 1 | Standard Spring Integration annotation enabling the infrastructure for an integration application. | 
| 2 | Searches for @MessagingGatewayinterfaces. | 
| 3 | The entry points to the client-side of the flow.
The calling application can use @Autowiredfor thisGatewaybean and invoke its method. | 
| 4 | Outbound endpoints consist of a MessageHandlerand a consumer that wraps it.
In this scenario, the@ServiceActivatorconfigures the endpoint, according to the channel type. | 
| 5 | Inbound endpoints (in the TCP/UDP module) are all message-driven and so only need to be declared as simple @Beaninstances. | 
| 6 | This class provides a number of POJO methods for use in this sample flow (a @Transformerand@ServiceActivatoron the server side and a@Transformeron the client side). | 
| 7 | The client-side connection factory. | 
| 8 | The server-side connection factory. |