2009-02-10 25 views
6

Benim Modülü yeni bir örneğini verir:Injector.getInstance (..) bir singleton için

bind(Translator.class).to(TranslatorImpl.class).in(Scopes.SINGLETON); 

Şimdi ben

Injector injector = ...; 
injector.getInstance(Translator.class); 

yaparken aynı örneği her şey almak bekliyoruz Ama bunu yaparsam

injector.getInstance(TranslatorImpl.class); 

Her zaman yeni bir örnek alıyorum. Bu bir hata veya beklenen davranış mı?

cevap

15

Bu TranslatorImpl.class tekil kapsamına bağlı olmadığından beklenen davranıştır, sadece Translator.class.

bind(Translator.class).to(TranslatorImpl.class); 
bind(TranslatorImpl.class).in(Scopes.SINGLETON); 
assertEquals(injector.getInstance(Translator.class), injector.getInstance(TranslatorImpl.class)); 

fazla ayrıntı için https://github.com/google/guice/wiki/Scopes#applying-scopes bakınız: Hem getInstance(..) aynı örneği dönmek istiyorsanız

, sen tekil kapsamına uygulanmasını bağlanabilir.

İlgili konular