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 .
AssistedInjectFactorykendi 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 CreditServiceveAuthService 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 Paymenta enjekte edersiniz .PaymentFactory@AssistedRealPayment
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);
RealPaymentiçin bir arayüz uygulamaya gerek yoktur.