如何解决不存在 [xxxx.xxxx.xxxx] 类型的 bean确保 bean 没有被 bean 要求 Micronaut 消息传递应用程序禁用
我有以下项目结构
主项目DEMO依赖于Gradle项目SERVICE,该项目实现了PORT项目的接口。
Demo build.gradle
dependencies {
implementation project(':port')
runtime project(':service')
}
服务 build.gradle
dependencies {
implementation project(':port')
implementation("javax.annotation:javax.annotation-api:1.3.2")
compile "io.micronaut:micronaut-inject:2.4.0"
annotationProcessor "io.micronaut:micronaut-inject-java:2.4.0"
}
服务类实现 IStartUpPort
@Singleton
public class StartUpService implements IStartUpPort {
@Override
public void toUpperCase() {
System.out.println("Something happened");
}
}
移植 build.gradle
dependencies {
implementation("javax.annotation:javax.annotation-api:1.3.2")
compile "io.micronaut:micronaut-inject:2.4.0"
annotationProcessor "io.micronaut:micronaut-inject-java:2.4.0"
}
端口接口
public interface IStartUpPort {
void toUpperCase();
}
在主项目中,我正在对一个服务项目进行 DI 并面临异常
@Singleton
public class StartUp implements ApplicationEventListener<StartupEvent> {
private final IStartUpPort iStartUpPort;
public StartUp(IStartUpPort iStartUpPort) {
this.iStartUpPort = iStartUpPort;
}
@Override
public void onApplicationEvent(StartupEvent event) {
iStartUpPort.toUpperCase();
}
}
例外
Message: No bean of type [fete.bird.IStartUpPort] exists. Make sure the bean is not disabled by bean requirements (enable trace logging for 'io.micronaut.context.condition' to check) and if the bean is enabled then ensure the class is declared a bean and annotation processing is enabled (for Java and Kotlin the 'micronaut-inject-java' dependency should be configured as an annotation processor).
Path Taken: new StartUp([IStartUpPort iStartUpPort])
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1034)
at com.example.$StartUpDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1943)
at io.micronaut.context.DefaultBeanContext.addCandidateToList(DefaultBeanContext.java:3091)
at io.micronaut.context.DefaultBeanContext.getBeanRegistrations(DefaultBeanContext.java:2968)
at io.micronaut.context.DefaultBeanContext.getBeansOfType(DefaultBeanContext.java:762)
at io.micronaut.context.DefaultBeanContext.publishEvent(DefaultBeanContext.java:1304)
at io.micronaut.context.DefaultBeanContext.start(DefaultBeanContext.java:246)
at io.micronaut.context.DefaultApplicationContext.start(DefaultApplicationContext.java:165)
at io.micronaut.runtime.Micronaut.start(Micronaut.java:71)
at io.micronaut.runtime.Micronaut.run(Micronaut.java:311)
at io.micronaut.runtime.Micronaut.run(Micronaut.java:297)
at com.example.Application.main(Application.java:8)
Caused by: io.micronaut.context.exceptions.NoSuchBeanException: No bean of type [fete.bird.IStartUpPort] exists. Make sure the bean is not disabled by bean requirements (enable trace logging for 'io.micronaut.context.condition' to check) and if the bean is enabled then ensure the class is declared a bean and annotation processing is enabled (for Java and Kotlin the 'micronaut-inject-java' dependency should be configured as an annotation processor).
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2367)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1261)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1012)
... 12 common frames omitted
这是一个 Micronuat 消息应用程序存储库,可在此处找到 https://github.com/anandjaisy/MessengingMultiGradleProject
解决方法
当前在链接存储库中的代码被配置为如果应用程序构建和执行正确,则不会发生问题中显示的错误。
克隆存储库:
$ git clone git@github.com:anandjaisy/MessengingMultiGradleProject.git
构建服务:
$ cd MessengingMultiGradleProject
$ ./gradlew assemble
运行服务:
$ java -jar build/libs/demo-0.1-all.jar
__ __ _ _
| \/ (_) ___ _ __ ___ _ __ __ _ _ _| |_
| |\/| | |/ __| '__/ _ \| '_ \ / _` | | | | __|
| | | | | (__| | | (_) | | | | (_| | |_| | |_
|_| |_|_|\___|_| \___/|_| |_|\__,_|\__,_|\__|
Micronaut (v2.4.0)
Something happened
13:33:55.037 [main] INFO io.micronaut.runtime.Micronaut - Startup completed in 405ms. Server Running: 0 active message listeners.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。