解决循环静态引用问题

3
我有2个静态初始化程序在互相调用:
  • 一个在Configuration类中, 从属性文件中读取配置参数;
  • 一个在LoggerFactory类中, 设置默认日志参数。
问题在于它们互相引用:
  • Configuration类需要记录器来记录潜在的I / O问题,当读取属性文件时。
  • LoggerFactory需要Configuration文件来设置日志文件名称、日志模式和默认日志级别。
这显然是不正确的,并且会导致一些空指针异常。
有没有一种处理这种情况的标准方式?

4
使用默认日志记录器,无需配置,并在可配置日志记录器加载时替换。 - obataku
静态初始化器通常不是一个好主意。你应该考虑一些依赖注入的方式。 - Jim Garrison
2
@JimGarrison 我使用DI也会遇到同样的问题,不是吗? - assylias
@veer 这似乎是一个合理的方法 - 请随意将其发布为答案。 - assylias
3个回答

3

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


1

您可以将记录器的配置分离,并在配置类之前进行初始化。尽管这并不理想,但我已经在几个项目中看到过这样做。


1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接