问题描述
我正在 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 (将#修改为@)