在我的Spring Boot应用程序中,我有以下入站门路(Java DSL):
@Bean
public IntegrationFlow upperCaseFlow() {
return IntegrationFlows
.from(
Http.inboundGateway("/conversions/upperCase")
.requestMapping(r -> r.methods(HttpMethod.POST).consumes("text/plain"))
.requestPayloadType(String.class)
.id("upperCaseGateway")
)
.<String>handle((p, h) -> p.toUpperCase())
.get();
}
.id(" uppercasegateway"),我认为是" ID" 的部分。
。另一方面,我试图以略有不同的DSL样式实现另一个HTTP入站网关,如下所示:
@Bean
public IntegrationFlow httpGetFlow() {
return IntegrationFlows.from(httpGetGate()).channel("httpGetChannel").handle("personEndpoint", "get").get();
}
@Bean
public MessagingGatewaySupport httpGetGate() {
HttpRequestHandlingMessagingGateway handler = new HttpRequestHandlingMessagingGateway();
handler.setRequestMapping(createMapping(new HttpMethod[]{HttpMethod.GET}, "/persons/{personId}"));
handler.setPayloadExpression(parser().parseExpression("#pathVariables.personId"));
handler.setHeaderMapper(headerMapper());
return handler;
}
@Bean
public HeaderMapper<HttpHeaders> headerMapper() {
return new DefaultHttpHeaderMapper();
}
我的问题:在创建HTTP入站网关的第二个样式中,如何将ID设置为具有" getPersonSgateway "的值的网关?我看到以第一个样式的方式,使用简单的 .id(" uppercasegateway") call。
是可能的。任何指导都将不胜感激!
真诚的,Bharath
id
只是一个bean名称;对于复合组件(消费者),它是消费者端点bean名称,消息处理程序获取<id>.handler
。
对于简单的消息驱动组件,例如HTTP入站适配器,它只是bean名称。因此,适当地命名您的豆子。
@Bean("upperCaseGateway")
public MessagingGatewaySupport httpGetGate() {
或,简单地
@Bean
public MessagingGatewaySupport upperCaseGateway() {