【发布时间】: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() 方法。更糟糕的是,如果我有很多这样的服务,我必须根据交叉依赖来明确管理关闭顺序。
有什么建议吗?
【问题讨论】:
-
我发现 LifeGycle (99soft.github.io/lifegycle) 应该有助于管理注入对象的生命周期。我会试一试的。
标签: java castle-windsor guice ioc-container