https://github.com/google/guice/wiki/AssistedInjectを読みましたが、 AssistedInject 引数の値を渡す方法については述べていません。inspector.getInstance() 呼び出しはどのようになりますか?
40417 次
1 に答える
189
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 を指定する必要があります。
したがって、 a を注入する代わりに、次のようにマークされているパラメーターを使用してaを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);
于 2012-01-23T21:51:52.727 に答える