首页 > 解决方案 > 如何使用 guice 只注入一个变量?

问题描述

我有一堂这样的课:

public class Person {
    private final Object1 object1;  //taking this as constructor parameter
    private final Object2 object2;  //want to inject only this?

    @Inject
    public Person(final Object1 object1) {
        this.object1 = object1;
    }
}

假设我想要一个只接受 object1 参数的构造函数,我想注入 object2?我怎样才能做到这一点?

标签: javadependency-injectionguiceinject

解决方案


您只能注入一个 ctor。

但是你可以使用工厂。看这个

https://google.github.io/guice/api-docs/3.0/javadoc/com/google/inject/assistedinject/FactoryModuleBuilder.html

根据@Assisted您选择通过工厂的参数(Object1/Object2),它将委托给适当的构造函数。


推荐阅读