https://github.com/google/guice/wiki/AssistedInject を読んだことがありますが、AssistedInject引数の値を渡す方法については言及していません。 injection.getInstance()呼び出しはどのようになりますか?
FactoryModuleBuilder クラスのjavadocを確認してください。
AssistedInject
を使用すると、自分でコーディングする代わりに、クラスのFactory
を動的に構成できます。これは、注入する必要のある依存関係を持つオブジェクトと、オブジェクトの作成中に指定する必要があるいくつかのパラメーターがある場合に役立ちます。
ドキュメントの例はRealPayment
です
public class RealPayment implements Payment {
@Inject
public RealPayment(
CreditService creditService,
AuthService authService,
@Assisted Date startDate,
@Assisted Money amount) {
...
}
}
CreditService
とAuthService
はコンテナによって注入されるべきですが、startDateとamountはインスタンスの作成中に開発者によって指定されるべきであることを参照してください。
したがって、Payment
を注入する代わりに、PaymentFactory
で@Assisted
としてマークされたパラメーターを使用してRealPayment
を注入します。
public interface PaymentFactory {
Payment create(Date startDate, Money amount);
}
そして、工場をバインドする必要があります
install(new FactoryModuleBuilder()
.implement(Payment.class, RealPayment.class)
.build(PaymentFactory.class));
構成されたファクトリーをクラスに注入できます。
@Inject
PaymentFactory paymentFactory;
コードで使用されます
Payment payment = paymentFactory.create(today, price);