如何解决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 举报,一经查实,本站将立刻删除。