Как установить идентификатор для входящего http-шлюза (в стиле DSL)? - PullRequest
0 голосов
/ 22 февраля 2019

В моем приложении 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 Ответ

0 голосов
/ 23 февраля 2019

id - это просто имя бина;для составных компонентов (потребителей) это имя бина конечной точки потребителя, и обработчик сообщений получает <id>.handler.

Для простых компонентов привода сообщений, таких как входящий адаптер http, это просто имя бина.Назовите ваш бин соответствующим образом.

Либо

@Bean("upperCaseGateway")
public MessagingGatewaySupport httpGetGate() {

, либо просто

@Bean
public MessagingGatewaySupport upperCaseGateway() {
...