Micronaut如何仅使用@Inject注释进行注入?

问题描述

我正在 Micronaut 项目中使用 @Inject 来通过属性进行依赖注入。我从 ServiceA 开始,该服务最初会注入 ServiceB ,而 ServiceB 有很多依赖关系,一切似乎都可以和谐地工作。

@Singleton
public class ServiceA {
    @Inject
    private ServiceB serviceB;

    @Inject
    private ServiceC serviceC;
    
    ...
}
public class ServiceB {
    @Inject
    private ServiceD serviceD;

    ...
}
public class ServiceC {
    ...
}

当我向 ServiceA 添加 ServiceC (没有任何依赖关系)时,问题就来了,应用程序在运行时引发了以下异常。

Error processing bean [Definition: ...] method definition [...]: Failed to inject value for field [serviceC] of class: ServiceA

Caused by: io.micronaut.context.exceptions.NoSuchBeanException: No bean of type [ServiceC] exists.

使代码编译并再次运行的修补程序是在 ServiceC 中添加 @Singleton 。到目前为止, ServiceB ServiceC 的唯一区别是 ServiceB 具有 @Inject 作为class属性,而 SerivceC 在整个类中都有 @Singleton 注释。

...

因此,我的问题是: Micronaut 如何理解如何仅使用属性中的 @Inject 注释注入依赖项,而无需使用任何类-像 @Singleton 这样的级别注释,在 Micronaut 中指定注释的真正规则/层次是什么。

谢谢

解决方法

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

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

小编邮箱: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...