Я пытаюсь создать сервер SpringBoot Rest с интеграцией Spring с HTTP -> inboundGateway.Spring Integration Http с Spring Boot и @RequestMapping
Я контроллер, с аннотацией "@Controller" и "@RequestMapping" и попытаться создать следующий поток:
GET запрос "/" -> Channel: httpRequestChannel -> Run IndexController -> Источник: httpReplyChannel -> back to Browser
Но это не работает.
Мои Интеграция Xml:
<int:channel id="httpRequestChannel">
<int:interceptors>
<int:wire-tap channel="logHttpRequestChannel" />
</int:interceptors>
</int:channel>
<int:channel id="httpReplyChannel">
<int:interceptors>
<int:wire-tap channel="logHttpReplyChannel" />
</int:interceptors>
</int:channel>
<int:logging-channel-adapter id="logHttpRequestChannel" level="INFO" logger-name="httpRequestChannel" log-full-message="true" />
<int:logging-channel-adapter id="logHttpReplyChannel" level="INFO" logger-name="httpReplyChannel" log-full-message="true" />
<int-http:inbound-gateway id="inboundGateway"
request-channel="httpRequestChannel" reply-channel="httpReplyChannel"
auto-startup="true" supported-methods="GET" path="/">
<int-http:request-mapping produces="application/json" />
</int-http:inbound-gateway>
Ошибка:
Dispatcher has no subscribers
Но на мой взгляд, контроллер должен быть абонентом через RequestMapping Annotation ...
я загрузить образец проекта github: https://github.com/marcelalburg/spring-boot-integration-rest-server
Спасибо за внимание. LP Марсель
UPDATE
Здравствуйте,
я вижу что-то в документации:
Синтаксический анализ HTTP шлюза входящего или адаптера HTTP входящего канала регистрирует integrationRequestMappingHandlerMapping боб типа IntegrationRequestMappingHandlerMapping, если он еще не зарегистрирован. Эта конкретная реализация HandlerMapping делегирует свою логику в RequestMappingInfoHandlerMapping. Реализация обеспечивает аналогичную функциональность, такую же, как и в org.springframework.web.bind.annotation.RequestMapping аннотации в Spring MVC.
Итак, я изменил следующее:
<int-http:inbound-gateway id="indexGateway"
request-channel="httpRequestChannel" reply-channel="httpReplyChannel"
auto-startup="true" supported-methods="GET" path="/, /test" reply-timeout="100" />
и мой контроллер
@ServiceActivator(inputChannel = "httpRequestChannel", outputChannel = "httpReplyChannel")
@RequestMapping(value = "/", method = RequestMethod.GET, produces = "application/json")
public String testGateway(LinkedMultiValueMap payload, @Headers Map<String, Object> headerMap)
{
// IntegrationRequestMappingHandlerMapping
System.out.println("Starting process the message [reciveing]");
return "{HelloMessage: \"Hello\"}";
}
@ServiceActivator(inputChannel = "httpRequestChannel", outputChannel = "httpReplyChannel")
@RequestMapping(value = "/test", method = RequestMethod.GET, produces = "application/json")
public String testGateway2(LinkedMultiValueMap payload, @Headers Map<String, Object> headerMap)
{
// IntegrationRequestMappingHandlerMapping
System.out.println("Starting process the message [reciveing]");
return "{HelloMessage: \"Test\"}";
}
теперь я получаю ответ, но он возвращает рандомизированное "Тест" и "Привет" ...
Thanks
или у кого-нибудь рабочая интеграция http-проекта интеграции без web.xml (возможно, с весенней загрузкой), какой из них работает как сервер REST? –
И не представляется возможным создать канал для каждого метода отдыха –