【发布时间】:2021-09-02 09:51:01
【问题描述】:
我正在尝试在 Java 代码(不是 Android)中为具有两个或多个实现的接口创建一个 Dagger。我能够使用 javax 库使用 CDI 成功完成此操作,但这次我想根据我的项目需要使用 Dagger。我无法在编译期间调用正确的实现或事件解决依赖关系。我收到多个绑定或缺少绑定的错误。
我是 Dagger2 的新手,正在尝试解决这个问题。
所以我先开始创建界面:
public interface Engine {
public startEngine();
}
引擎有两种实现汽油和柴油
public class PetrolEngine implements Engine {
@Inject
public PetrolEngine(){}
@Override
public startEngine() {
System.out.println("Petrol Engine Start");
}
}
public class DieselEngine implements Engine {
@Inject
public DieselEngine(){}
@Override
public startEngine() {
System.out.println("Diesel Engine Start");
}
}
模块创建为
@Module
public class EngineModule {
@Provides
@IntoMap
@StringKey("Petrol")
public Engine providesEngine(PetrolEngine petrolEngine){
return petrolEngine;
}
@Provides
@IntoMap
@StringKey("Diesel")
public Engine providesEngine(DieselEngine dieselEngine){
return dieselEngine;
}
}
组件
@Component(module = EngineModule.class)
public interface EngineComponent {
EngineService providesEngineService();
}
最后是调用汽油或柴油的服务
public call EngineService {
private Engine engine;
@Inject
public EngineService(Engine engine) {
this.engine = engine;
}
public void getEngineInstance() {
//Some code to get the Petrol/Diesel Engine Instance
}
}
【问题讨论】:
标签: java dagger-2 multibinding