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

时间:2018-07-26 21:51:53

标签: groovy micronaut

我有一个像这样的micronaut API:

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

    @Get("/{id}")
    Club show(Long id)

在单元测试中,当我调用show方法时,实际上实际上是在调用listClubs()方法。

为什么会这样?

详细信息:

考虑到我的URL映射一定是错误的,我开始调试Netty以尝试了解框架如何构造URL。

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

Club show(Long param0)

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

我正在尝试遵循以下示例:

https://github.com/alvarosanchez/micronaut-workshop/tree/master/ex02/solution/clubs

我的项目中有一个重要的不同之处,就是端点设置为"/club",而不是"/"

@Controller("/club")

@Client("/club")

我正在使用差异工具将项目与示例进行比较,但是我在努力寻找其他差异(除了更改包名)。

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

谢谢

更新

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

完全清洁不能解决问题。

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

我认为build.gradle更改导致问题消失了。由于该问题的显示不可靠,因此很难确定这是否是导致此问题得以解决的更改。

0 个答案:

没有答案