java - 在 Google Guice 中自动启动和停止服务

标签 java castle-windsor guice ioc-container

在与温莎城堡 (.NET) 打交道后,我才开始接触 Google Guice。

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

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

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

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

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

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

有什么建议吗?

最佳答案

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

关于java - 在 Google Guice 中自动启动和停止服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20490368/

相关文章:

Java重复泛型定义

java - Integer.parseInt 和带十进制数的字符串格式

c# - 为什么 WindsorDependencyResolver 无法解析?

c# - 在温莎城堡注册通用装饰器?

dependency-injection - Guice:将对象从已安装的模块注入(inject)到依赖的已安装模块

java - JAVA 中具有不可序列化注入(inject)成员的可序列化类

java - 优化 @Provides 中的代码以绑定(bind)到我的 guice 包中

java - 通过套接字复制文件的最快方法

java - 以同样的方式对两个列表进行排序

c# - 我可以或应该在运行时有条件地使用 CaSTLe Windsor 绑定(bind)接口(interface)吗?