它如何工作@BindsInstance匕首2

问题描述 投票:7回答:3

我最近将匕首2.8更新为2.9匕首。和最新版本的文档已添加如下:

-为组件构建器添加了@BindsInstance,以轻松绑定在图形外部构造的实例。

-生产者:添加了ProducerMonitor.ready (),当所有生产者的输入均可用时调用。

-已移除@Provides(type =...)用法。请改用dagger.multibindings中的注释。 @Produces.type也被删除。

-现在已验证所有绑定方法,即使在特定的@Component中未使用它们也是如此>

-@Component.dependencies不能再包含@Modules

我想知道这些新功能如何:

谢谢!

注意:我是匕首2的新手,但您希望能够最大程度地利用此库。

我最近将匕首2.8更新为2.9匕首。和最新版本的文档已添加如下:-为组件构建器添加了@BindsInstance,可以轻松地绑定以下实例:...

dagger-2 dagger
3个回答
4
投票

19
投票

@ bindsInstance用于从获取组件的模块和链接模块中删除构造函数。


1
投票

@BindsInstance让组件直接托管依赖项,因此生存期就是组件的生存期。这可以用来避免@Singleton范围。有关系吗避免单例作用域可帮助DaggerAppComponent无需昂贵的DoubleCheck即可访问提供程序。因此,可以,仍然可以使用模块而不使用任何范围。但是,使用模块仍然意味着DaggerAppComponent将使用提供者工厂来注入依赖项。使用@BindsInstance,根本不需要提供程序,除非通过Lazy<>Provider<>延迟注入依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.