解析循环静态引用

时间:2012-08-07 23:35:25

标签: java static circular-reference initializer

我有2个静态初始化程序试图互相调用:

  • Configuration类中的一个,它从属性文件中读取配置参数;
  • LoggerFactory类中的一个,它设置默认的日志记录参数。

问题是他们互相引用:

  • Configuration类需要记录器在读取属性文件时记录潜在的I / O问题。
  • LoggerFactory需要配置文件来设置日志文件名,日志模式和默认日志级别。

这显然不对,我在这里和那里得到一些NPE。

是否有处理这种情况的标准方法?

3 个答案:

答案 0 :(得分:3)

使用不需要配置的默认记录器,并在加载可配置记录器时替换。这样,您可以轻松地以简单的方式解决循环依赖。

答案 1 :(得分:1)

您可以分离记录器的配置,并在配置类之前初始化它。尽管这并不理想,但我已经在几个项目中看到了这一点。

答案 2 :(得分:1)

您应该创建一个在程序启动时加载的记录器,但是在创建了可以配置的记录器时稍后覆盖它。