【问题标题】:Auto-Starting and stopping services in Google GuiceGoogle Guice 中的自动启动和停止服务
【发布时间】:2013-12-27 17:28:05
【问题描述】:

在使用 Windsor Castle (.NET) 进行了大量工作后,我是 Google Guice 的新手。

我想在 Google Guice 中实现类似于 Windsor Castle Startable Facility (http://docs.castleproject.org/Windsor.Startable-Facility.ashx) 的功能。

这意味着注入器将在绑定并满足所有依赖项后立即自动创建我的单例服务的实例。

我想在服务创建时调用 start() 方法,在应用程序关闭时调用 stop() 方法。例如,start() 会初始化一个计时器,而 stop() 通常会取消这个计时器。

我知道 Eager Singletons 功能“.asEagerSingleton()”,但我能想到它的一些问题:

(1) 如果我在服务中进行方法注入,则在设置方法注入依赖项之前调用服务的构造函数。因此,我可能无法在施工期间充分使用该服务。

(2) 没有自动关机。我必须在我的应用程序关闭逻辑中手动获取服务实例并调用 stop() 方法。更糟糕的是,如果我有很多这样的服务,我必须根据交叉依赖来明确管理关闭顺序。

有什么建议吗?

【问题讨论】:

标签: java castle-windsor guice ioc-container


【解决方案1】:

我建议你试试Netflix's governator,它具有类路径扫描和自动绑定、生命周期管理、配置到字段映射、字段验证和并行化对象预热。

【讨论】:

    【解决方案2】:

    在 GWizard 中试用 gwizard-services 模块:

    https://github.com/stickfigure/gwizard

    这为 Guava 服务提供了少量粘合剂,因此可以轻松添加并行启动、执行和关闭的服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2013-12-22
      • 1970-01-01
      相关资源
      最近更新 更多