代码之家  ›  专栏  ›  技术社区  ›  Hakanai

控制PicoContainer启动顺序

  •  3
  • Hakanai  · 技术社区  · 16 年前

    我的任务是对如何启动应用程序进行重构。基本上,我们有一堆控制台应用程序,它们依赖于GUI应用程序的启动代码,从而产生虚假的依赖关系,从而影响到我们需要发布哪些库,以及其他模块需要声明哪些依赖项。

    所以我写了一个简单的启动框架,基本上就是把一堆可运行的对象放到一个列表中,然后按顺序运行它们——这样就可以了。

    但是我在想-我们的项目中已经有了PicoContainer,所以所有这些需要在启动时运行的东西都有可能被扔进PicoContainer中,如果他们实现Startable,他们就会开始。。。

    但在某些情况下,我们需要指定它们之间的顺序。例如,我不希望任何其他组件在我们向日志中写入一个头来指示应用程序正在启动之前写入日志。我知道我可以通过引入注入依赖项来引入排序,但在这种情况下,这感觉像是一种黑客行为——我需要为其他可能写入日志的组件添加日志头编写器,这一点都不好。

    尽管如此,控制PicoContainer的启动顺序似乎是件好事,那么有没有其他办法呢?

    2 回复  |  直到 10 年前
        1
  •  2
  •   xeye    14 年前

    您不能控制默认的开始/停止顺序,但可以确定您可以对自己的生命周期进行排序。

    1) 使您的接口MyStartable具有init()和可比扩展方法。

    3) 手动或使用标准启动/停止生命周期启动MyStart

    5) 对每个MyStartable调用init()

    我想还有更“本地”的方法来实现这一点,通过生命周期管理器,但需要探索来源。

        2
  •  0
  •   beetstra    15 年前

    组件当前如何写入日志?我希望日志有一个(picocontainer)依赖项,然后该日志的构造函数将写入头。

    推荐文章