绑定的方式有很多种:
<1> 类名绑定
<2> 实例绑定
<3> 连接绑定
<4> Provider绑定
<5> 命名绑定
<6> 泛型绑定
<7> 集合绑定
假设有接口PayService存在,该接口有实现类PayServiceImpl
1.类名绑定
bind(PayService.class).to(PayServiceImpl.class)
2.实例绑定
bind(PayService.class).toInstance(new PayServiceImpl())
3.连接绑定
接口A绑定到实现类B上,而实现类B又绑定到B的某个实例b上,那么接口A就相当于绑定到实例b上。
4.Provider绑定
可以通过toProvider,
也可以通过@provides注解,
当然也可以使用类名绑定等。
这里需要注意的是前面不一定非得使用Provider<T>才行,只要注入进去即可绑定。
使用@Provides绑定,每次调用可以获取新的值,而使用bind,初始化的时候值就已经定‘死’了,之后不会改变
5.命名绑定
在注入的时候,加入@Named("AAA"),那么在绑定的时候,同样需要加上注解@Named("AAA")
如:
bind(Long.class).annotatedWith(Names.named("AAA")).to(...)
6.泛型绑定
当有泛型的时候,使用TypeLiteral
bind(new TypeLiteral<List<String>>(){}).toInstance(...)
7.集合绑定
实现多个Module共同绑定一个Set或者Map
网友评论