2013-12-10 23 views
1

我是Windsor Castle(.NET)的一员,在Google Guice工作很久以后才开始使用Google Guice。Google Guice中的自动启动和停止服务

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

这意味着一旦绑定并且满足所有依赖关系,注入器将自动创建单件服务的实例。

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

我知道的渴望单身的特征“.asEagerSingleton()”,但我能想到的一些问题吧:

(1)如果我做的方法注入的服务,该服务的构造函数在方法注入依赖关系被设置之前调用。因此,我可能无法在施工时间内完全使用该服务。

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

有什么建议吗?

+0

我发现LifeGycle(http://99soft.github.io/lifegycle)应该有助于管理注入对象的生命周期。我会试一试。 – dux2

回答

4

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