【问题标题】:How to inject HTTP client from library in Micronaut app?如何从 Micronaut 应用程序的库中注入 HTTP 客户端?
【发布时间】:2020-12-23 13:41:15
【问题描述】:

我有一个用于其他服务的外部 http 客户端,我已将其导入我的 micronaut 应用程序,但收到错误提示:

原因:io.micronaut.context.exceptions.NoSuchBeanException:不存在 [xxx.files.client.micronaut.FilesClient] 类型的 bean。确保 bean 没有被 bean 要求禁用(启用跟踪日志以检查 'io.micronaut.context.condition'),如果启用了 bean,则确保将类声明为 bean 并启用注释处理(对于 Java 和Kotlin 的 'micronaut-inject-java' 依赖项应配置为注解处理器)。

我在应用启动时添加了这些类:

object TransformerApplication {
    @JvmStatic
    fun main(args: Array<String>) {
        Micronaut.build()
                .packages(
                        "xxx.transformer",
                        "xxx.files.client.micronaut"
                )
                .mainClass(TransformerApplication.javaClass)
                .start()
    }
}

但是在创建时:

@KafkaListener("transformer-group")
class EventsConsumerImpl(private val xlsTransformer: XlsTransformer,
                         private val filesClient: FilesClient,
                         private val workspacesClient: WorkspacesClient) : EventsConsumer {
    ...
    }

我的 http 客户端:

@io.micronaut.http.client.annotation.Client("\${files.url}")
interface FilesClient {

    companion object {
        const val FILES_TOKEN_KEY = "FILES"
    }

    @FilesTokenVerification
    @Get("\${files.url}/{fileId}")
    fun getFile(@PathVariable fileId: String): ByteArray

    @FilesTokenVerification
    @Patch("\${files.url}/{fileId}/info")
    fun updateFileStatus(@PathVariable fileId: String, @Body metadata: Metadata): Metadata

    @FilesTokenVerification
    @Get("\${files.url}/{fileId}/info")
    fun getFileMetadata(@PathVariable fileId: String): Metadata
}```

Can someone explain to me what I'm doing wrong?

【问题讨论】:

    标签: kotlin micronaut micronaut-client


    【解决方案1】:

    通常会为此使用工厂:

    https://docs.micronaut.io/latest/guide/index.html#factories

    但我不知道这是否适用于声明式客户端。 也许尝试一个包装。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 2019-12-28
      • 1970-01-01
      相关资源
      最近更新 更多