- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我已阅读 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) {
...
}
}
请注意,CreditService
和 AuthService
应由容器注入(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/
我有一个如下所示的构造函数: @Inject public MyClass( @Named("config") String configFile, @Named("t
我刚刚开始学习Guice,但我已经遇到了一个问题。我有一个接口(interface) PlayerFactory 和一个实现 BlackjackPlayer PlayerFactory.java pu
关于 assisted injection 的页面解释了如何通过使用 @Assisted 注释构造函数中的一些参数来完成辅助注入(inject),但它没有解释 @AssistedInject 注释的用
我一直在一个项目中使用 guice。 我有一个抽象类,它有很多实现。为了使用正确的实现,我使用一个工厂来接收参数,然后返回正确的实例。 演示代码 @Singleton public class MyF
当我运行下面的代码时,我得到输出“Bar got 1234”。看起来 Guice 找不到 num2 的绑定(bind),并隐式分配了 num1 的值。这是 AssistedInject 功能的一部分吗
我已阅读 https://github.com/google/guice/wiki/AssistedInject ,但它没有说明如何传入 AssistedInject 参数的值。 injector.g
我想在运行时使用 Hilt 为 ViewModel 提供一些依赖项。我遵循了 d.android.com this 指导的解决方案. @HiltViewModel public class Vi
我想做这样的事情: @Inject private CollectorsListHolderFactory collectorsListHolderFactory; private Collector
我正在尝试使用 Guice 3.0 AssistedInject,它不会实例化工厂。 SSCCE代码: 父类 public class ParentClass() { @Inject privat
在我的 guice 模块中,我有多个工厂,如下所示: install(new FactoryModuleBuilder().implement(SportsCar.class,Ferrari.clas
我找不到如何进行“动态辅助注入(inject)”的方法。我的意思是我想根据参数向工厂提供它需要在运行时使用的实现类名。这是我目前拥有的: interface Letter {} abstract cl
我正在使用 Guice Assisted Inject图书馆为我 build 一个工厂。我目前的设置如下: class MyObject { @Inject public MyObject(@As
我最近开始使用 Guice,需要一些帮助。 我有一个带有构造函数的类,其中包含 3 种不同的要注入(inject)的参数。下面是类 @Inject public Bullet(EntityParams
我遇到一个奇怪的错误,在使用辅助注入(inject)时我无法克服: [DEBUG] [project] - Rebinding com.gwtplatform.mvp.client.DesktopGi
什么是 Spring Framework相当于FactoryModuleBuilder , @AssistedInject , 和 @Assisted在 Google Guice ?换句话说,使用 S
我是一名优秀的程序员,十分优秀!