Ben fark bir yöntem üzerinde @provides
kullanarak ve benim guice modüllerde bind()
kullanma arasında ne olduğunu merak ediyorum.Guice @provides ve bind() arasında bir fark var mı?
Genellikle AbstractModule.configure (geçersiz kılmak) ve bunun gibi benim arayüzleri için bütün uygulamaları bağlamak:, öyle olsa şu anda nerede ile çalışıyorum kod temeli bir desen Ancak
public class MyModule extends AbstractModule
{
@Override
protected void configure()
{
this.bind(myIface.class).to(myIfaceImpl.class);
this.bind(myOtherIface.class).to(myOtherIfaceImpl.class).asEagerSingleton();
}
...
}
uygulamalar açıkça bağlı olmayan bu gibi sağlayıcılarından iade ediliyor:
public class MyModule extends AbstractModule
{
@Provides
@Singleton
myIface iFaceProvider()
{
return new myIfaceImpl();
}
...
}
Biri diğerini tercih etmek için bir sebep var mı? Belirli bir yöntemi zorlayan durumlar var mı? Eğer
bind(MyInterface.class).to(MyImplementation.class)
yaparsanız
Tüm bunların javax.inject ile ilişkisi nasıl? Ne kodunuzda ne de OP'lerde ne ek açıklamaların alındığını görürüz; Yanılmıyorsam bunun bir etkisi olabilir mi? – fge
Fark olmamalıdır. Bildiğim tek fark Guice, 'javax.inject.Inject' ile' final 'alanlarına enjekte etmeyi reddedecektir, ancak' @ com.google.inject.Inject' ile çalışacaktır. –
@fge Ayrıca javax.inject.Provides 'yoktur –