Java 静态变量中的guice注入
我对guice注射有怀疑。 是否可以将@named变量值注入静态变量 我试过了Java 静态变量中的guice注入,java,guice,guice-3,Java,Guice,Guice 3,我对guice注射有怀疑。 是否可以将@named变量值注入静态变量 我试过了 @Provides @Named("emp.id") public Integer getEmpId() { return 2; } 并尝试将此值注入静态变量,例如 @Inject @Named("emp.id") private static Integer id; 但是id返回值null,当我删除静态修饰符时,id的值为1 这里到底发生了什么?Guice没有按设计注入静态字段。你可以,但是: 不建
@Provides
@Named("emp.id")
public Integer getEmpId() {
return 2;
}
并尝试将此值注入静态变量,例如
@Inject
@Named("emp.id")
private static Integer id;
但是id
返回值null,当我删除静态修饰符时,id的值为1
这里到底发生了什么?Guice没有按设计注入静态字段。你可以,但是: 不建议将此API用于一般用途,因为它遇到许多与静态工厂相同的问题:测试起来很笨拙,使依赖项不透明,并且依赖于全局状态 在您的情况下,您可以将其添加到
configure
方法中,以便Guice注入静态字段:
requestStaticInjection(Foo.class);
如果不添加此项,则整数将初始化为null(默认情况下)
但是,我不知道为什么在删除静态修改器后,
id
被设置为1。如果您的Guice模块设置正确,它似乎应该设置为2。对于未来的用户,同样可以用于在enum内注入静态类