构造函数vs字段与方法注入Dagger 2

时间:2018-03-08 07:50:31

标签: android dependency-injection dagger-2 dagger

我一直在学习Dagger 2一周,在我读过的教程中,大多数人写道,最好在Field和Method注入时使用Constructor注入。

我很困惑,想要说清楚,何时应该使用Constructor注入,以及Field和Method注入时。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我不能说这是肯定的答案,但我想分享我的意见。我更喜欢构造函数注入,因为您通过实现其依赖项来强制创建对象。换句话说,你永远不会在你调用对象方法的情况下结束,并且由于某些依赖关系没有设置,你会得到一个空指针异常(除非你把它设置为{{1在这种情况下,您有意要求它)。我倾向于总是在任何地方使用构造函数依赖注入。

那就是说,有时它根本不可能。例如,在Android中,活动是由系统创建的,因此我们通常没有自己的构造函数来调用和传递依赖项。在这里,我经常使用字段依赖注入。我这样做是因为有很多工具可以帮助你解决这个问题。

第三个选项是null。我个人从来没用过它。不完全确定需要什么。也许什么时候依赖必须在运行时改变?不确定。