检查 Dagger 2 依赖周期的简便方法?
Easy way to check Dagger 2 dependency cycle?
这里。
所以在我的项目中进行了一些重构之后,我在某个地方遇到了依赖循环。我的具有 @Provided
依赖项的模块很大,真的很难理解到底是什么原因。
这是控制台日志:
http://pastebin.com/yxDDEHgz
如您所见,它很大,什么也没有告诉我。有什么方法可以快速查看是哪个依赖注入导致了循环?
你只需要注意以[parameter: …
开头的行
如果你注意,你会看到你的周期如下所示:
line 16: [parameter: packagename.map.mapservice.IMapService mapService]
line 13: [parameter: packagename.lib.common.IApplicationVisibility mapVisibility]
line 9: [parameter: packagename.lib.notifications.INotificationSettings notificationSettings]
line 7: [parameter: packagename.map.mapcontent.MarkerClickHandler markerClickHandler]
line 5: [parameter: packagename.map.mapservice.IMapService mapService]
在这里你试图重新注入 IApplicationVisibility
所以循环在这里 :
line 3: [injected field of type: packagename.lib.common.IApplicationVisibility applicationVisibility]
IMapService -> IApplicationVisibility -> INotificationSettings -> MarkerClickHandler -> IMapService(又是 IMapService !!!) -> IApplicationVisibility
您在 MarkerClickHandler
中再次注入 IMapService
,这会启动 循环 !!
这里。
所以在我的项目中进行了一些重构之后,我在某个地方遇到了依赖循环。我的具有 @Provided
依赖项的模块很大,真的很难理解到底是什么原因。
这是控制台日志: http://pastebin.com/yxDDEHgz
如您所见,它很大,什么也没有告诉我。有什么方法可以快速查看是哪个依赖注入导致了循环?
你只需要注意以[parameter: …
如果你注意,你会看到你的周期如下所示:
line 16: [parameter: packagename.map.mapservice.IMapService mapService]
line 13: [parameter: packagename.lib.common.IApplicationVisibility mapVisibility]
line 9: [parameter: packagename.lib.notifications.INotificationSettings notificationSettings]
line 7: [parameter: packagename.map.mapcontent.MarkerClickHandler markerClickHandler]
line 5: [parameter: packagename.map.mapservice.IMapService mapService]
在这里你试图重新注入 IApplicationVisibility
所以循环在这里 :
line 3: [injected field of type: packagename.lib.common.IApplicationVisibility applicationVisibility]
IMapService -> IApplicationVisibility -> INotificationSettings -> MarkerClickHandler -> IMapService(又是 IMapService !!!) -> IApplicationVisibility
您在 MarkerClickHandler
中再次注入 IMapService
,这会启动 循环 !!