我的任务是对我们如何启动应用程序进行一些重构工作。基本上,我们有一堆控制台应用程序,它们依赖于 GUI 应用程序启动代码,导致虚假依赖项,这些依赖项对我们需要发布哪些库以及其他模块需要声明哪些依赖项具有启动效应。
所以我编写了一个简单的启动框架,我基本上只是将一堆 Runnable 对象放入一个列表中,然后按顺序运行它们 - 它可以工作。
但我在想——我们的项目中已经有了 PicoContainer,所以所有这些需要在启动时运行的东西都可能被扔到 PicoContainer 中,如果他们实现了 Startable,他们就会开始......
但在某些情况下,我们希望指定它们之间的顺序。例如,在我们将标头写入日志以指示应用程序正在启动之前,我不希望任何其他组件写入日志。我知道我可以通过引入注入依赖项来引入排序,但在这种情况下这感觉就像是一个 hack - 我需要添加日志头编写器作为可能写入日志的所有其他组件的依赖项,这不是很好全部。
尽管如此,控制 PicoContainer 启动的顺序似乎还是不错的,那么可能还有其他方法吗?
或者,我可以保持简单并坚持我的 Runnable 列表。毕竟,它确实有效。