Annotation-Based Configuration
示例存储库中的以下示例展示了当您使用注解而不是 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 | 启用集成应用程序基础结构的标准 Spring Integration 注释。 |
2 | Searches for @MessagingGateway interfaces. |
3 | 流程客户端的入口点。调用应用程序可以使用此 `Gateway`bean 的 `@Autowired`并调用其方法。 |
4 | 出站端点包含一个 MessageHandler`和一个将其包装起来的消费者。在该情形中, @ServiceActivator`会根据通道类型配置端点。 |
5 | 入站端点(在 TCP/UDP 模块中)全部是消息驱动的,因此仅需声明为简单的 `@Bean`实例。 |
6 | 本类提供许多 POJO 方法用于此示例流程(服务器端的 @Transformer`和 `@ServiceActivator ,以及客户端的 @Transformer )。 |
7 | The client-side connection factory. |
8 | The server-side connection factory. |