当前位置: 首页 > 知识库问答 >
问题:

Spring集成Http与Spring Boot和@RequestMapping

王成化
2023-03-14

我尝试使用Spring集成HTTP开发SpringBoot Rest服务器-

我有一个控制器,用“@Controller”和“@RequestMapping”注释,并尝试创建以下流:

获取请求"/"-

但它不起作用。

我的集成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

但在我看来,控制器应该是通过Request Map注释的订阅者...

我上传了一个示例github项目:https://github.com/marcelalburg/spring-boot-integration-rest-server

谢谢你帮助马塞尔

你好

我在留档看到一些东西:

HTTP入站网关或HTTP入站通道适配器的解析注册了integrationRequestMappingHandlerMapping类型的integrationRequestMappingHandlerMapping bean(如果尚未注册)。HandlerMapping的这个特定实现将其逻辑委托给RequestMappingInfoHandlerMapping。该实现提供了与org.springframework.web.bind.annotation类似的功能。Spring MVC中的RequestMapping注释。

所以,我改变了以下内容:

    <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\"}";
}

现在,我得到一个响应,但它返回随机的“测试”和“你好”...

谢谢

共有1个答案

陈琪
2023-03-14

不你似乎有一个基本的误解。

使用Spring集成,入站网关替换了@Controller,并将入站(可能转换)对象作为消息的有效负载发送到Request estChannel

其他一些组件(不是控制器)订阅该通道以接收消息。

因此,您可以将POJO配置为

然后,它将使用消息,并可以选择将回复发送到输出通道(省略输出通道将导致其路由回网关)。

有关示例,请参阅超文本传输协议示例。

 类似资料:
  • 我在运行一个将spring boot与弹性搜索集成在一起的简单应用程序时遇到了这个错误。你能帮我解决这个问题吗?我是初学者。 我正在尝试将一些书籍映射到ES中,并能够使用ES Java API中的客户端配置打印它们。我想知道这些版本是否使用不当,所以请查看我的pom。xml 它表示通过字段“es”表示的未满足的依赖关系,我不知道这是什么意思。关于NoClassDefFoundError- 这是st

  • 我试图在Spring Integration中定义一个简单的消息流,它从一个通道读取消息,然后将消息转储到Kafka队列中。为此,我使用了spring集成kafka。问题是我得到了一个无法解读的错误。 以下是我的XML配置: 当我通过Spring启动运行我的应用程序时,我得到这个异常: 创建名称为org.springframework.integration.kafka.outbound.Kafk

  • 本文向大家介绍详解SpringBoot之集成Spring AOP,包括了详解SpringBoot之集成Spring AOP的使用技巧和注意事项,需要的朋友参考一下 在开始之前,我们先把需要的jar包添加到工程里。新增Maven依赖如下:  接下来,我们进入正题。这里的涉及的通知类型有:前置通知、后置最终通知、后置返回通知、后置异常通知、环绕通知,下面我们就具体的来看一下怎么在SpringBoot中

  • 我正在构建一个小微服务来访问来自SFTP文件服务器的文件。我决定使用Spring Integration SFTP完成这项工作。我对Spring Integration很陌生,对它的工作原理很困惑。 我的目标是在SFTP服务器上获得一个目录中的文件列表,并将它们呈现给用户界面。从那里,用户将选择一个文件进行下载,我将使用文件名将文件从SFTP服务器流式传输到用户界面。 其次,我是否需要两个接口才能

  • 我不熟悉Spring集成。我正在尝试使用http入站网关构建一个简单的应用程序。下面是我得到的运行时异常。 下面是代码文件。 波约 服务 } 服务激活器 } 存储库 请帮助我,我正在试图找到异常发生的原因,但无法解决。提前谢谢。 集成文件。

  • 问题内容: 我想使用Spring Batch和Spring Integration从数据库导入数据,并将它们写入文件,然后通过ftp将其传输到远程服务器。 但是我想我的问题是我不想为我的表创建域对象。我的查询是随机的,我想要一些可以读取数据并将其写入文件并进行传输的东西。 是否可以在不创建各自的域对象的情况下使用Spring Batch和Integration? 问题答案: 绝对。您可以将JDBC