Https://github.com/google/guice/wiki/AssistedInject okudum , ancak AssistedInject bağımsız değişkenlerinin değerlerinin nasıl geçirileceğini söylemiyor. İnjector.getInstance () çağrısı nasıl görünür?
Https://github.com/google/guice/wiki/AssistedInject okudum , ancak AssistedInject bağımsız değişkenlerinin değerlerinin nasıl geçirileceğini söylemiyor. İnjector.getInstance () çağrısı nasıl görünür?
Yanıtlar:
FactoryModuleBuilder sınıfının javadoc'unu kontrol edin .
AssistedInject
Factory
kendi başınıza kodlamak yerine sınıf için dinamik olarak yapılandırmanıza izin verir . Bu genellikle, enjekte edilmesi gereken bağımlılıkları olan bir nesneye ve nesnenin yaratılması sırasında belirtilmesi gereken bazı parametrelere sahip olduğunuzda yararlıdır.
Belgelerden örnek bir RealPayment
public class RealPayment implements Payment {
@Inject
public RealPayment(
CreditService creditService,
AuthService authService,
@Assisted Date startDate,
@Assisted Money amount) {
...
}
}
Bunu gör CreditService
veAuthService
kapsayıcı tarafından enjekte edilmelidir, ancak başlangıçTarihi ve miktar, örnek oluşturma sırasında bir geliştirici tarafından belirtilmelidir.
Dolayısıyla, a enjekte etmek yerine, içinde olarak işaretlenmiş parametrelerle Payment
a enjekte edersiniz .PaymentFactory
@Assisted
RealPayment
public interface PaymentFactory {
Payment create(Date startDate, Money amount);
}
Ve bir fabrika bağlanmalı
install(new FactoryModuleBuilder()
.implement(Payment.class, RealPayment.class)
.build(PaymentFactory.class));
Yapılandırılmış fabrika sınıflarınıza enjekte edilebilir.
@Inject
PaymentFactory paymentFactory;
ve kodunuzda kullanıldı
Payment payment = paymentFactory.create(today, price);
RealPayment
için bir arayüz uygulamaya gerek yoktur.