如何从 Micronaut 应用程序中的库注入 HTTP 客户端?

问题描述

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

Caused by: 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?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...