0

我有以下项目结构

在此处输入图像描述

主项目DEMO依赖于 Gradle 项目SERVICE,它实现了PORT项目的接口。

演示 build.gradle

dependencies {
    implementation project(':port')
    runtime project(':service')
} 

服务构建.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");
    }
}

端口构建.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

4

1 回答 1

1

当前链接存储库中的代码已配置为,如果应用程序正确构建和执行,问题中显示的错误将不会发生。

克隆存储库:

$ 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.
于 2021-03-16T18:34:40.473 回答