Как установить идентификатор для входящего http-шлюза (в стиле DSL)?
В моем приложении 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.
С другой стороны, я пытаюсь реализовать другой входящий HTTP-шлюз в немного другом стиле DSL следующим образом:
@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, как мне установить идентификатор для шлюза со значением как "getPersonsGateway"? Я вижу, что в первом стиле это возможно с помощью простого вызова.id("upperCaseGateway").
Любое руководство будет с благодарностью!
С уважением, Бхарат
1 ответ
id
это просто имя бобов; для составных компонентов (потребителей) это имя компонента конечной точки потребителя, и обработчик сообщений получает <id>.handler
,
Для простых компонентов привода сообщений, таких как входящий адаптер http, это просто имя компонента. Поэтому назовите свой боб соответствующим образом.
Или
@Bean("upperCaseGateway")
public MessagingGatewaySupport httpGetGate() {
или просто
@Bean
public MessagingGatewaySupport upperCaseGateway() {