是的,我知道@Component
不能也不应该依赖@Subcomponent
。
但是,这是问题所在:我有一个AppComponent
,其中有一个RetrofitModule
用于通过 OAuth 2 对我的呼叫进行身份验证,我需要为每个呼叫添加会话信息。因此,我创建了一个Interceptor
,它将该会话附加到标题中。该应用在其生命周期内可以有多个会话,因此我认为将SessionComponent
设置为@Subcomponent
是有意义的。
这是组件和模块的继承结构。
AppComponent
|
-----------------------------------------------------------
| | |
RetrofitModule SessionKeyModule SessionSubcomponent
| |
OkHttpClientModule ---------------------------------
| | |
OkHttpSessionInductionInterceptorModule SignatureGeneratorModule CurrentSessionModule
SessionGeneratorModule需要来自SessionKeyModule
和CurrentSessionModule
的信息。
OkHttpSessionInductionInterceptorModule
依赖于SessionKeyModule
,需要从CurrentSessionModule
获取会话。
问题就在这里; @Component
不能依赖@Subcomponent
。那么如何在拦截器中获取签名?我感觉像我需要更改那里的层次结构,但我不知道如何。还是@Component
可以使用@Subcomponent
中的信息。