美文网首页
[Guice] 5 绑定

[Guice] 5 绑定

作者: LZhan | 来源:发表于2019-08-10 18:43 被阅读0次

    绑定的方式有很多种:
    <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上。

    image.png

    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

    相关文章

      网友评论

          本文标题:[Guice] 5 绑定

          本文链接:https://www.haomeiwen.com/subject/txorjctx.html