匕首 + Spring

Dagger + Spring

我们选择 Dagger2 而不是 spring 作为其中一个 Storm 应用程序的依赖注入框架。 我们还有一个遗留的 spring 基于 MVC 的应用程序,它在多项目 gradle 设置中使用了来自 dagger 项目的一些代码。

(简化的)项目层次结构如下所示:

  1. :匕首核心
  2. :storm-dagger(取决于匕首核心)
  3. :spring-ui(取决于匕首核心)

由于 spring 和 dagger 都有自己的引导对象图的方法,让#3 协同工作的最佳方法是什么?目前,我们在 spring-ui 中有一个 @Component 工厂 class,它 "provides" 来自 dagger-core 的依赖项。然后工厂和提供的 classes 都被定义为使用 spring 工厂模式的 spring bean(工厂 class 作为使用工厂方法的工厂 bean,以及其他提供 classes 作为工厂 bean 的工厂方法)。有更好的方法吗?

目前,我们在 spring-ui 中有一个 @Component 工厂 class,它 "provides" 来自 dagger-core 的依赖项。然后使用 spring 的工厂模式将工厂和提供的 classes 定义为 spring bean(工厂 class as factory-bean 使用 factory-method,其他提供的 classes 作为 factory-bean 的 factory-method)。