Bel*_*loo 2 java android dagger-2
假设你有这样的课程:
@SomeScope
class ServiceScopeManager {
@Inject
Dependency1 dependency1;
@Inject
Dependency2 dependency2;
@Inject
ServiceScopeManager(){
}
@Inject
void init(){
//do something really important with dependencies
}
}
Run Code Online (Sandbox Code Playgroud)
@Provides模块中的任何方法正如您所看到的那样,它是高级类,例如,它可以侦听系统中的某些事件并执行其依赖项的释放.
问题是这个类不会被创建,因为没有任何东西依赖它.
我能以某种方式告诉匕首始终创建依赖于组件创建(例如),而不是默认需要时吗?或者可能以任何其他方式达到要求.
不,匕首不提供Guice的任何相等于requestInjection或者requestStaticInjection,如果你没有提到你的对象,匕首甚至不会产生厂为它或它的依赖关系.这通常是一件好事,因为它允许您拥有一个经过严格修剪的图形,而不是使用@Inject注释为类路径上的每个类生成代码生成工厂实现.
你要求Dagger在这里做太多:它是一个依赖注入框架,不会像这样管理组件生命周期.相反,您必须在应用程序逻辑中执行此初始化,可以通过创建FooComponentInitializer或FooComponentStartup类来与FooComponent相邻并通过它们提供.这会将您的代码减少为:
FooComponent fooComponent = DaggerFooComponent.create();
fooComponent.getInitializer().initialize();
Run Code Online (Sandbox Code Playgroud)
......这对我来说似乎很简单.
| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |