Groovy 为什么micronaut调用了错误的控制器方法?

Groovy 为什么micronaut调用了错误的控制器方法?,groovy,micronaut,Groovy,Micronaut,我有这样一个micronaut API: @Get("/") List<Club> listClubs() @Get("/{id}") Club show(Long id) @Get(“/”) 列表俱乐部() @获取(“/{id}”) 俱乐部表演(长id) 在我的单元测试中,当我调用show方法时,实际上会调用listClubs()方法 为什么会这样 详细信息: 考虑到我的URL映射肯定是错误的,我开始在Netty中进行调试,试图了解框架是如何构

我有这样一个micronaut API:

    @Get("/")
    List<Club> listClubs()

    @Get("/{id}")
    Club show(Long id)
@Get(“/”)
列表俱乐部()
@获取(“/{id}”)
俱乐部表演(长id)
在我的单元测试中,当我调用
show
方法时,实际上会调用
listClubs()
方法

为什么会这样

详细信息:

考虑到我的URL映射肯定是错误的,我开始在Netty中进行调试,试图了解框架是如何构造URL的

在HttpClientIntroductionAdvice中,上下文显示如下API方法:

俱乐部秀(长参数0)

拦截器正在参数映射中设置
param0
,这与我的方法的实际参数名称不匹配。当URI模板展开时,这会导致ID被删除(因此URI变成
/
,而不是
/1

我试图遵循以下示例:

在我的项目中有一个重要的不同点,即端点设置在
“/club”
而不是
“/”

@Controller(“/club”)

@Client(“/club”)

我使用diff工具将我的项目与示例进行比较,但我很难找到任何其他差异(除了包名更改)

为什么会这样?我应该找什么

谢谢

更新:

使用浏览器测试了目标端点-看起来不错

Gradle clean无法解决此问题

我从使用IntelliJ调试应用程序类切换到使用“gradlew run”,在此过程中,我更改了build.gradle(从gradle CLI添加JVM属性)。我还在IDE中启用/禁用注释处理器。 (注意:在上一个项目中,我一导入IDE就启用了注释处理。在这个项目中,我直到出现问题才启用注释处理。)


我认为build.gradle的改动导致了问题的消失。由于问题显示不可靠,因此很难确定这是否是导致它被修复的更改。

在单元测试之外运行它时,它是否按预期工作?你能启动服务器并用鼠标点击端点吗browser@tim_yates谢谢你的回复。我必须从build.gradle中删除“discovery client”依赖项才能启动该应用程序(因为我没有在本地运行Concur)。一旦我做了这个更改,我就不能再复制这个问题——无论是在单元测试中还是在服务器上。(澄清:即使我将该依赖项放回,我仍然无法复制。)更新:我能够在不同的项目(上面研讨会的ex03)中使用live server而不是unit test产生相同的问题。FWIW,目标端点(具有ID)通过直接浏览器访问按预期工作