AndroidAnnotations 和 Dagger 2

AndroidAnnotations and Dagger 2

我正在阅读有关依赖注入的文章,发现了 2 个引起我注意的库,AndroidAnnotations 和 Dagger 2。我看到的是 AA 有很多功能,包括 DI,但是大多数开发人员都在使用 Dagger 2 DI.

我想知道 DI 与 AA 和 DI 与 Dagger 2 有什么区别?如果我使用 AA 意味着我不需要 Dagger 2?

我找不到太多有关使用 AA 进行 DI 以及与其他库进行比较的信息。

任何信息都会有很大帮助。

我觉得AA和Dagger没法比

Dagger 是一个通用的依赖注入库,具有很多功能。它也被设计为 Android 运行,但它不需要 Android,它可以应用于纯 Java 项目。对于完全基于 code-generation 的依赖注入器,它具有很多依赖注入功能。

AndroidAnnotations 是 Android 的 annotation-based 框架。它确实有一个有限的依赖注入模块(这只是 AA 的一小部分),但这不是它的主要特性。它为 Android 的很多东西添加了基于注释的样板删除 API,这些 API 在每个项目中都使用,通常需要大量不必要的代码,例如视图和资源注入、事件处理、实例状态恢复、线程,等你可以看到AA的所有用例here.

Dagger 和 AA can coexist,实际上将 Dagger 的复杂 dep 注入和 AA 的许多功能结合使用真的很有意义(我在我的所有项目中都这样做)。

免责声明:我是一名 AndroidAnnotations 开发人员。

最近我通过实现 Dagger 2 和 Android 架构组件(Room 和 Viewmodel)创建了一个示例应用程序,它可以帮助您理解使用 dagger 库和 MVVM 架构的依赖注入。

Here is the github project link