如何使用Guice的AssistedInject?

我读过https://github.com/google/guice/wiki/AssistedInject,但它没有说明如何传入AssistedInject参数的值。injector.getInstance()调用是什么样子的

检查FactoryModuleBuilder类的javadoc

AssistedInject允许您为类动态配置工厂,而不是自己编写。当您有一个对象,该对象具有应注入的依赖项,以及在创建对象期间必须指定的一些参数时,这通常非常有用

文档中的示例是RealPayment

公共类RealPayment实现支付{
@注入
公共实缴(
信用服务信用服务,
AuthService AuthService,
@协助日期开始日期,
@辅助资金(金额){

}
}

请参阅CreditServiceAuthService应该由容器注入,但startDate和amount应该由开发人员在实例创建期间指定

因此,您不是注入一个支付而是注入一个支付工厂,其参数在RealPayment中标记为@Assisted

公共接口付费工厂{
付款创建(日期开始日期、金额);
}

一个工厂应该被绑定

安装(新FactoryModuleBuilder()
.implement(Payment.class、RealPayment.class)
.build(PaymentFactory.class));

可以在类中注入已配置的工厂

@Inject
工资工厂工资工厂;

并在代码中使用

Payment Payment=paymentFactory.create(今天,价格);

发表评论