gpt4 book ai didi

java - 控制 PicoContainer 的启动顺序

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:41:36 25 4
gpt4 key购买 nike

我的任务是对我们如何启动应用程序进行一些重构工作。基本上,我们有一堆依赖于 GUI 应用程序启动代码的控制台应用程序,导致虚假依赖项,这些依赖项对我们需要发布的库以及其他模块需要声明的依赖项具有启动效果。

所以我编写了一个简单的启动框架,我基本上只是将一堆 Runnable 对象放入一个列表中,然后按顺序运行它们 - 它工作正常。

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

但在某些情况下,我们希望指定它们之间的顺序。例如,在我们向日志中写入 header 以指示应用程序正在启动之前,我不希望任何其他组件写入日志。我知道我可以通过引入注入(inject)依赖项来引入排序,但在这种情况下这感觉像是一个 hack - 我需要将日志 header 编写器添加为可能写入日志的所有其他组件的依赖项,这不是很好全部。

尽管如此,控制 PicoContainer 启动的顺序似乎会很好,那么也许还有其他方法吗?

或者,我可以保持简单并坚持使用我的 Runnable 列表。毕竟,它确实有效。

最佳答案

您无法控制默认的启动/停止顺序,但您肯定可以对自己的生命周期进行排序。

例子:

1) 使您的接口(interface) MyStartable 具有方法 init() 并扩展 Comparable。

2) 添加容器组件 MyStart,用 MyStartable 的列表或数组初始化。

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

4) 在 MyStart 中,只需根据您应该覆盖的自然顺序对列表/数组进行排序。

5)在每个 MyStartable 上调用 init()

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

关于java - 控制 PicoContainer 的启动顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2627218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com