Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 静态变量中的guice注入_Java_Guice_Guice 3 - Fatal编程技术网

Java 静态变量中的guice注入

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没有按设计注入静态字段。你可以,但是: 不建

我对guice注射有怀疑。 是否可以将@named变量值注入静态变量

我试过了

@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内注入静态类