第三章 【第六节】无目标绑定UntargettedBindings:Guice指导教程(原创翻译)

目录
[隐藏]

UntargettedBindings

创建没有目标的绑定
Creating bindings that don’t have targets

无目标绑定 Untargeted Bindings

你可以创建没有特别指定的目标的绑定。这点对具体的类或者类型比较有用,他们需要用到@ImplementedBy和@ProvidedBy注解。无目标绑定把一个类通知给注入器,这样可以对依赖进行预处理。无目标绑定没有语法条款,类似如下写法:
You may create bindings without specifying a target. This is most useful for concrete classes and types annotated by either @ImplementedBy or @ProvidedBy. An untargetted binding informs the injector about a type, so it may prepare dependencies eagerly. Untargetted bindings have no to clause, like so:

当指定绑定注解,你必须添加目标绑定,即使是相同的具体类。例如:
When specifying binding annotations, you must still add the target binding, even it is the same concrete class. For example:


实例:

UntargettedBindings(没有目标的绑定):就是在module里绑定时不需要明确实现类,结合用@ImplementedBy或者@ProvidedBy实现。区别绑定的注解时要加上实现类的类型,即使是父类型。

执行结果:
run AnimalModule.configure()
CatWrapper.Contructor()
com.zoo.guice.userguide.chap6.p1.CatWrapper@8fce95
com.zoo.guice.userguide.chap6.p1.Cat@143c8b3
CatWrapper.Contructor()
com.zoo.guice.userguide.chap6.p1.CatWrapper@12d7a10
com.zoo.guice.userguide.chap6.p1.Cat@143c8b3

上面这种是@ImplementedBy加上注解绑定的,后面也跟上了to,下面这种是@ProvidedBy实现。

执行结果:
run AnimalModule.configure()
run Provider.get()
com.zoo.guice.userguide.chap6.p2.Cat@18ee9d6
com.zoo.guice.userguide.chap6.p2.Cat@18ee9d6

下一节:ToConstructorBindings


说明:

      鉴于网上guice中文资料较少,出于个人爱好,对该项目下的用户API文档进行翻译。如有翻译不恰当之处,还望指正。

      google Guice 项目地址:https://github.com/google/guice

      Guice 英文API地址:https://github.com/google/guice/wiki/LinkedBindings

分享到:

发表评论

昵称

沙发空缺中,还不快抢~