java - 使用内置的 Guice 注入(inject)来注释静态 java.util.Logger 实例的正确习惯用法是什么?

标签 java logging guice idioms java.util.logging

我想开始使用 Guice 3.x 神奇地注入(inject)我的 java.util.logging.Logger 实例。

这是我尝试开始工作的一段代码:

@Singleton
public class Main
{
    @Inject
    private static final Logger logger;

...
}

这似乎行不通。

无论我在声明中使用什么范围,我都会得到 Exception in thread "main"java.lang.NullPointerException

我在 configure() 方法中将行 super.requestStaticInjection(Main.class); 添加到我的 module 并且它开始工作,但前提是我删除 final 关键字并使其成为 static Logger logger

如果可能的话,我宁愿保留 Logger final

执行此操作的正确惯用 Guice 方法是什么?

最佳答案

您可以使用例如 guice 注入(inject)静态属性

class Dummy {
   @Inject static Foo;
}

requestStaticInjection(Dummy.class);

在注入(inject)器配置模块中。

关于java - 使用内置的 Guice 注入(inject)来注释静态 java.util.Logger 实例的正确习惯用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5902817/

相关文章:

Java:帮助使用 Jackson 读取 YAML 中的关联数组

java - Struts 2 中的拦截器未正确重定向页面

java - Excel 函数 STEYX 转 Java

guice - 在 Shiro 中,未绑定(bind)的 SecurityManager 真的是无效的应用程序配置吗?

java - OptimisticLockException 之后重试方法时出错 - org.postgresql.util.PSQLException : This statement has been closed

java - 为什么一个类的绘制看不到另一类的数组?

bash - 具有文件描述符的重复 IO

java - 使用 Log.e() 时出错;

node.js - 在 node.js 中通过 ID 跟踪请求流

java - 如何在 guice 中使用依赖注入(inject)字段进行静态最终字段初始化?