我想作以下提供商的意義:Guice-Provider如何實現身份識別功能?
@Provides
@ScopeMatching
@MatchingScopeAnnotation
MatchingBag provideBag(MatchingBag bag) {
return bag;
}
下面是引用註釋的聲明:
@BindingAnnotation
@Target({ FIELD, PARAMETER, METHOD })
@Retention(RUNTIME)
public @interface ScopeMatching {
// nothing
}
@ScopeAnnotation
@Target({ TYPE, METHOD })
@Retention(RUNTIME)
private @interface MatchingScopeAnnotation {
// nothing
}
看起來很奇怪確定一個供應商,只是一個身份的功能。我可以看到刪除提供程序會導致注入錯誤,所以它很重要。
你能幫我理解提供者的作用是什麼嗎?解決提供商問題不是雞蛋問題嗎? Guice如何做到這一點?
我在猜測還有另一個提供者,或者是用兩個註解之一註解的自動單例,這個函數提供了綁定的'bag'給註釋了該函數的作用域註解的構造函數。 – dlamblin
是的,MatchingBag有一個構造函數:@Inject MatchingBag(Config config)(我們可以假設Guice知道如何構造Config類)。請注意,這些構造函數沒有使用任何作用域進行註釋。 –