gpt4 book ai didi

java - Dagger2 找不到带注释的方法

转载 作者:行者123 更新时间:2023-12-02 01:27:32 24 4
gpt4 key购买 nike

我正在使用 Gradle 构建一个 Java 项目,并使用 Dagger2 作为依赖注入(inject)器。我收到此错误:

<path to the class>/MyComponent.java:13: error: [Dagger/MissingBinding] <package>.ConnectionDTO cannot be provided without an @Inject constructor or an @Provides-annotated method.
ConnectionDTO sourceConnectionDTO();
^
<package>.ConnectionDTO is provided at
<package>.MyComponent.sourceConnectionDTO()
<path to the class>/MyComponent.java:14: error: [Dagger/MissingBinding] <package>.ConnectionDTO cannot be provided without an @Inject constructor or an @Provides-annotated method.
ConnectionDTO destinationConnectionDTO();
^
<package>.ConnectionDTO is provided at
<package>.MyComponent.destinationConnectionDTO()

Java 版本 1.8Gradle 版本:5.4.1(也尝试过 4.5.1)

Dagger 依赖项:

dependencies {
annotationProcessor 'com.google.dagger:dagger-compiler:2.17'

compile 'com.google.dagger:dagger:2.17'
...
}

模块类:

@Module
public class MyModule {
private final MyConfiguration config;

@Inject
public MetaStoreModule(MyConfiguration config){
this.config = config;
}

@Provides
@Singleton
@Named("sourceConnection")
public ConnectionDTO sourceConnectionDTO() {
return new ConnectionDTO(config.sourceHost(), config.sourceUser(),
config.sourcePassword(), config.sourceDataBaseName());
}

@Provides
@Singleton
@Named("destinationConnection")
public ConnectionDTO destinationConnectionDTO() {
return new ConnectionDTO(config.destinationHost(), config.destinationUser(),
config.destinationPassword(), config.destinationDataBaseName());
}
}

组件类:

import dagger.Component;

import javax.inject.Singleton;

@Singleton
@Component(modules = MyModule.class)
public interface MyComponent{
ConnectionDTO sourceConnectionDTO();
ConnectionDTO destinationConnectionDTO();
}

不知道为什么如果方法被注释,它们不会被构建识别

最佳答案

您没有添加 ConnectionDTO在任何地方,这就是 Dagger 提示找不到它的原因。

您添加@Named("sourceConnection") ConnectionDTO以及 @Named("destinationConnection") ConnectionDTO ,所以您还应该请求那些

@Singleton
@Component(modules = MyModule.class)
public interface MyComponent{
@Named("sourceConnection")
ConnectionDTO sourceConnectionDTO();

@Named("destinationConnection")
ConnectionDTO destinationConnectionDTO();
}

关于java - Dagger2 找不到带注释的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56670720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com