dagger2的疑问

来源:2-10 Dagger2-依赖注入

慕yan

2018-01-14

老师,是不是在component中提供接口才会出现这种,既需要在module中添加provide方法,又需要在实现类的构造上面添加@Inject呢? 如果我具体的presenter层只是提供一个需要inject的UserServiceImpl,这个时候是不是不需要在module中添加,只需要在UserServiceImpl的构造上面加上@Inject?这样就能提供具体的UserServiceImpl?

写回答

1回答

雷宇

2018-01-14

@Inject构造方法和Module是两种维度,具体可以查看我的手记,上面有详细的介绍Dagger2。

0
1
慕yan
我自己试了一下,接口是不能直接注入的,想要获取它的实例对象只能通过它的实现类,所以需要在Module中通过@Provides来提供,在provide这个方法中,需要传入一个具体的实现类,所以会到这个实现类中去查看有没有被注入,所以说UserServiceImpl需要在在构造上面或者通过@Provides来提供入口。 @Inject lateinit var userService: UserService 上面是需要在Module中写一个provide方法,因为需要UserService。 @Inject lateinit var userService: UserServiceImpl 而这种写法是直接需要这个实现类的实例,因为在UserServiceImpl构造上已经有了@Inject,所以就没有必要在Module中提供了。 以上就是我的大致理解。 谢谢老师!
2018-01-27
共1条回复

Kotlin打造完整电商APP 模块化+MVP+主流框架

全网稀缺Kotlin项目实战,打造新一代Android工程师的核心竞争力

694 学习 · 209 问题

查看课程