Dependency injection Dagger绑定实例问题的官方示例
我不熟悉匕首。我在“绑定实例”部分遵循了文档,下面是提供的示例:Dependency injection Dagger绑定实例问题的官方示例,dependency-injection,annotations,dagger-2,Dependency Injection,Annotations,Dagger 2,我不熟悉匕首。我在“绑定实例”部分遵循了文档,下面是提供的示例: @Component(modules = AppModule.class) interface AppComponent { App app(); @Component.Builder interface Builder { @BindsInstance Builder userName(@UserName String userName); AppComponent build(); } }
@Component(modules = AppModule.class)
interface AppComponent {
App app();
@Component.Builder
interface Builder {
@BindsInstance Builder userName(@UserName String userName);
AppComponent build();
}
}
我的问题是这个@UserName
来自哪里?
导致此代码块的解释如下
也许您的应用程序只接受一个参数,该参数表示您希望作为@UserName字符串注入的用户名。您可以将带注释的@BindsInstance方法添加到组件生成器中,以允许将该实例注入组件中
我无法解释这件事。有人能解释一下吗
谢谢
@Username
在本例中是一个限定符。如果您使用/注入一个普通的字符串
,它会把事情弄得乱七八糟(因为字符串
是一种比较常见的类型),但是与限定符@Username字符串
结合使用会成为一个唯一的键
@Named(“foo”)
是包含的基本限定符,您可以使用,也可以创建自己的限定符,例如@Username
关于如何创建自定义限定符的任何指南?@woodybird您可以将@qualifier
添加到注释中。您链接的Dagger文档中也有一个示例