2009-02-10 14 views
6

mio modulo:Injector.getInstance (..) restituisce una nuova istanza di Singleton

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

Ora mi aspetto di ottenere la stessa ogni volta esempio quando faccio

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

Ma se lo faccio

injector.getInstance(TranslatorImpl.class); 

Ricevo una nuova istanza ogni volta. È un bug o un comportamento previsto?

risposta

15

Questo è il comportamento previsto perché TranslatorImpl.class non è associato all'ambito Singleton, solo Translator.class.

Se si desidera sia getInstance(..) per tornare alla stessa istanza, si potrebbe legare l'attuazione della portata Singleton:

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

Vedere https://github.com/google/guice/wiki/Scopes#applying-scopes per maggiori dettagli.

Problemi correlati