gpt4 book ai didi

java - 如何使用 Guice 的 AssistedInject?

转载 作者:IT老高 更新时间:2023-10-28 11:46:43 32 4
gpt4 key购买 nike

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

最佳答案

查看 FactoryModuleBuilder 的 javadoc类。

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

文档中的示例是 RealPayment

public class RealPayment implements Payment {
@Inject
public RealPayment(
CreditService creditService,
AuthService authService,
@Assisted Date startDate,
@Assisted Money amount) {
...
}
}

请注意,CreditServiceAuthService 应由容器注入(inject),但 startDate 和数量应由开发人员在实例创建期间指定。

因此,不是注入(inject) Payment,而是注入(inject) PaymentFactory,其参数在 RealPayment @Assisted

public interface PaymentFactory {
Payment create(Date startDate, Money amount);
}

并且应该绑定(bind)一个工厂

install(new FactoryModuleBuilder()
.implement(Payment.class, RealPayment.class)
.build(PaymentFactory.class));

可以在你的类中注入(inject)已配置的工厂。

@Inject
PaymentFactory paymentFactory;

并在您的代码中使用

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

关于java - 如何使用 Guice 的 AssistedInject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8976250/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com