首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IneligibleMethodException:找到多个候选参数类型- Spring Integration

IneligibleMethodException:找到多个候选参数类型- Spring Integration
EN

Stack Overflow用户
提问于 2021-03-02 03:13:43
回答 1查看 205关注 0票数 0

我正在使用

代码语言:javascript
复制
org.springframework.boot
        spring-boot-starter-integration
    

    
        org.springframework.boot
        spring-boot-starter-web
    

    
        org.springframework.integration
        spring-integration-http

我有一个控制器,在那里我收到了一个路径变量和请求体

代码语言:javascript
复制
@PatchMapping("/applications/{applicationId}/disclosure")
public void piSubmission(@PathVariable(value = "applicationId") String applicationId,
                         @RequestBody DisclosureInfo disclosureInfo) {

    disclosureGateway.process(applicationId, disclosureInfo);
    
}

我使用网关初始化进程,因此我将2个值传递给它

代码语言:javascript
复制
@MessagingGateway
public interface DisclosureGateway {
    
    @Gateway(requestChannel = "disclosure")
    void process(String applicationId, DisclosureInfo disclosureInfo);
    
    
}

但是我得到了下面的错误

代码语言:javascript
复制
Caused by: java.lang.IllegalArgumentException: org.springframework.integration.handler.support.MessagingMethodInvokerHelper$IneligibleMethodException: Found more than one parameter type candidate: [java.lang.String] and [v3.b.engine.domain.kernel.DisclosureInfo]
at org.springframework.integration.handler.support.MessagingMethodInvokerHelper.createHandlerMethod(MessagingMethodInvokerHelper.java:396)
at org.springframework.integration.handler.support.MessagingMethodInvokerHelper.(MessagingMethodInvokerHelper.java:255)
at org.springframework.integration.handler.support.MessagingMethodInvokerHelper.(MessagingMethodInvokerHelper.java:206)
at org.springframework.integration.handler.support.MessagingMethodInvokerHelper.(MessagingMethodInvokerHelper.java:210)
at org.springframework.integration.handler.MethodInvokingMessageProcessor.(MethodInvokingMessageProcessor.java:50)
at org.springframework.integration.transformer.MethodInvokingTransformer.(MethodInvokingTransformer.java:38)
at org.springframework.integration.config.annotation.TransformerAnnotationPostProcessor.createHandler(TransformerAnnotationPostProcessor.java:71)
at org.springframework.integration.config.annotation.AbstractMethodAnnotationPostProcessor.postProcess(AbstractMethodAnnotationPostProcessor.java:158)
at org.springframework.integration.config.annotation.MessagingAnnotationPostProcessor.postProcessMethodAndRegisterEndpointIfAny(MessagingAnnotationPostProcessor.java:230)
at org.springframework.integration.config.annotation.MessagingAnnotationPostProcessor.lambda$processAnnotationTypeOnMethod$1(MessagingAnnotationPostProcessor.java:220)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
at org.springframework.integration.config.annotation.MessagingAnnotationPostProcessor.afterSingletonsInstantiated(MessagingAnnotationPostProcessor.java:141)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:963)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:923)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:326)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:123)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
... 67 more
Caused by: org.springframework.integration.handler.support.MessagingMethodInvokerHelper$IneligibleMethodException: Found more than one parameter type candidate: [java.lang.String] and [v3.b.engine.domain.kernel.DisclosureInfo]
    at org.springframework.integration.handler.support.MessagingMethodInvokerHelper$HandlerMethod.setExclusiveTargetParameterType(MessagingMethodInvokerHelper.java:1334)
    at org.springframework.integration.handler.support.MessagingMethodInvokerHelper$HandlerMethod.processMethodParameterForExpression(MessagingMethodInvokerHelper.java:1199)
    at org.springframework.integration.handler.support.MessagingMethodInvokerHelper$HandlerMethod.generateExpression(MessagingMethodInvokerHelper.java:1152)
    at org.springframework.integration.handler.support.MessagingMethodInvokerHelper$HandlerMethod.(MessagingMethodInvokerHelper.java:1091)
    at org.springframework.integration.handler.support.MessagingMethodInvokerHelper.createHandlerMethod(MessagingMethodInvokerHelper.java:391)

我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-02 04:01:02

请让您自己更熟悉什么是Spring Integration中的Messaging Gateway:

https://docs.spring.io/spring-integration/docs/current/reference/html/messaging-endpoints.html#gateway

..。

简而言之:网关是在其方法调用中发送消息的接口。

The The The

是这样的:

代码语言:javascript
复制
public interface Message {

    /**
     * Return the message payload.
     */
    T getPayload();

    /**
     * Return message headers for the message (never {@code null} but may be empty).
     */
    MessageHeaders getHeaders();

}

因为你没有

类型作为您的参数之一,框架不知道将它们中的哪一个映射到它将要创建的消息的有效负载。

请确保哪个参数应该使用

好的。以及哪一个将被添加到标头中,使用

注释。所有这些信息都出现在我一开始链接的文档中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66428239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档