如何使用Guice的AssistedInject?

如何使用Guice的AssistedInject?,第1张

如何使用Guice的AssistedInject?

检查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));

可以将配置好的工厂注入您的班级中。

@InjectPaymentFactory paymentFactory;

并在您的代码中使用

Payment payment = paymentFactory.create(today, price);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5500571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存