我读过https://github.com/google/guice/wiki/AssistedInject,但它没有说明如何传入AssistedInject参数的值。injector.getInstance()调用是什么样子的
检查FactoryModuleBuilder类的javadoc
AssistedInject允许您为类动态配置工厂,而不是自己编写。当您有一个对象,该对象具有应注入的依赖项,以及在创建对象期间必须指定的一些参数时,这通常非常有用
文档中的示例是RealPayment
公共类RealPayment实现支付{
@注入
公共实缴(
信用服务信用服务,
AuthService AuthService,
@协助日期开始日期,
@辅助资金(金额){
…
}
}
请参阅CreditService和AuthService应该由容器注入,但startDate和amount应该由开发人员在实例创建期间指定
因此,您不是注入一个支付而是注入一个支付工厂,其参数在RealPayment中标记为@Assisted
公共接口付费工厂{
付款创建(日期开始日期、金额);
}
一个工厂应该被绑定
安装(新FactoryModuleBuilder()
.implement(Payment.class、RealPayment.class)
.build(PaymentFactory.class));
可以在类中注入已配置的工厂
@Inject
工资工厂工资工厂;
并在代码中使用
Payment Payment=paymentFactory.create(今天,价格);