多个提供商之间的优先级如何在Google Guice中发生?

时间:2018-04-27 14:23:19

标签: java guice

我正在尝试Google Guice作为我的新项目的依赖注入框架,并从春季转移。 我必须使用@Provides编写多个提供程序,其中从一个提供程序创建的实例将用作单独模块中其他提供程序的输入(有时是相同的模块)。 为了绑定从模块生成的实例,我使用的是Guice的

@BindingAnnotation

创建自定义注释。

我只是想知道Google Guice的优先级如何?

就像在春天我们有一个用于创建bean的@Dependson注释,Guice或Guice中是否有一个替代方案可以自行生成依赖图?

使用从@BindingAnnotation创建的注释来绑定提供程序的实例吗?

1 个答案:

答案 0 :(得分:0)

  

[是] Guice足够聪明,可以自己生成依赖图吗?

我不熟悉Spring,但我的直觉是

  

使用从中创建的注释来绑定提供程序的实例   @BindingAnnotation够吗?

只要提供者被注释为提供某些内容(使用@Provides),Guice将使用该注释作为默认值,除非在模块内部被覆盖。

但是,使用BindingAnnotations 确实在模块中包含一些代码以将它们绑定在一起,

https://github.com/google/guice/wiki/BindingAnnotations

bind(CreditCardProcessor.class)
    .annotatedWith(PayPal.class)
    .to(PayPalCreditCardProcessor.class);

所以我怀疑基于Binding Annotations的注释比@Provides具有更强的强度,只要你有模块中的对应物,就足以将你的提供者绑定在一起。