Dependency injection dagger能识别超类依赖关系吗
我的设置是这样的Dependency injection dagger能识别超类依赖关系吗,dependency-injection,dagger-2,Dependency Injection,Dagger 2,我的设置是这样的 interface ServiceProvider {...} @Singleton class ServiceProviderImpl implements ServiceProvider {...} class ServiceConsumer { @Inject ServiceConsumer(ServiceProvider prov) {...} } 不幸的是,这不起作用,因为它声称没有ServiceProvider的提供程序,即使子类ServiceProvi
interface ServiceProvider {...}
@Singleton
class ServiceProviderImpl implements ServiceProvider {...}
class ServiceConsumer {
@Inject
ServiceConsumer(ServiceProvider prov) {...}
}
不幸的是,这不起作用,因为它声称没有ServiceProvider
的提供程序,即使子类ServiceProviderImpl
有一个提供程序
我明白了
错误:[Dagger/MissingBinding]c.b.d.s.ServiceProvider在没有@Providers注释方法的情况下无法提供
我可以通过向模块中添加以下内容来解决此问题
@Provides
@Singleton
ServiceProvider serviceProvider(ServiceProviderImpl impl) {return impl;}
这是故意的,还是我做错了什么?这是故意的。Dagger不会假设在没有指定的情况下使用什么接口实现 但是,对于绑定接口的实现,您应该使用它,它是
@的优化版本,为实现->接口绑定提供了
@Binds
@Singleton
ServiceProvider serviceProvider(ServiceProviderImpl impl);
这是故意的。Dagger不会假设在没有指定的情况下使用什么接口实现
但是,对于绑定接口的实现,您应该使用它,它是@的优化版本,为实现->接口绑定提供了
@Binds
@Singleton
ServiceProvider serviceProvider(ServiceProviderImpl impl);