【问题标题】:Trying to inject an @Client in to a Groovy Function尝试将 @Client 注入到 Groovy 函数中
【发布时间】:2018-06-12 08:14:36
【问题描述】:

我正在尝试编写一个 Micronaut AWS Groovy Lambda,它使 HTTPS 调用另一个服务。我遵循了 MN Docs 并使用以下方法创建了我的项目:

 mn create-function hello-world -lang groovy

这给了我一个框架“hello-world”项目,我可以运行一个功能测试。

然后我尝试修改 Groovy 函数 (hello.world.HelloWorldFunction) 以注入 HTTP 客户端,以在我的函数中调用 API:

import static io.micronaut.http.HttpRequest.GET

@Field @Inject @Client("https://www.googleapis.com/books/v1") RxHttpClient httpClient

Maybe<String> helloWorld() {
    httpClient.retrieve(GET("/volumes?q=isbn:0747532699"))
              .firstElement()

}

完成此操作后,我现在在运行功能测试时遇到异常:

08:51:25.269 [nioEventLoopGroup-1-5] ERROR 
i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: 
Failed to inject value for field [httpClient] of class: 
hello.world.HelloWorldFunction

Path Taken: HelloWorldFunction.httpClient
io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for field [httpClient] of class: 
hello.world.HelloWorldFunction

Path Taken: HelloWorldFunction.httpClient

我几乎可以肯定做错了什么,但在如何弄清楚是什么方面我有点茫然。因此感谢任何指点。

非常感谢,

艾德

【问题讨论】:

  • 你能发布你所有的import 声明吗?

标签: groovy aws-lambda micronaut


【解决方案1】:

找到了答案。这是1.0.0.M1 中的一个错误。它已经在 master 中修复,因此可以通过从源代码构建 Micronaut 并使用它来解决。

此外,我发现我返回的类型不受 Lambda 函数支持 (Maybe&lt;String&gt;)。从 master 构建 MN 并将其更改为受支持的返回类型后,现在一切正常。

【讨论】:

    猜你喜欢
    • 2023-01-16
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多