1

以下链接描述了如何使用带有 start() 和 stop() 方法的 Service 接口在 Guice 中处理模块初始化和销毁​​:

http://code.google.com/p/google-guice/wiki/ModulesShouldBeFastAndSideEffectFree

文档解释说,服务的创建在客户端代码中如下所示:

public static void main(String[] args) throws Exception {
    Injector injector = Guice.createInjector(
        new DatabaseModule(),
        new WebserverModule(),
        ...
    );

    Service databaseConnectionPool = injector.getInstance(
        Key.get(Service.class, DatabaseService.class));
    databaseConnectionPool.start();
    addShutdownHook(databaseConnectionPool);

    Service webserver = injector.getInstance(
        Key.get(Service.class, WebserverService.class));
    webserver.start();
    addShutdownHook(webserver);
}

但没有列出具体服务类的任何示例实现。谁能给我一份?至少是 start() 和 stop() 包含的示例实现。

4

1 回答 1

2

看一下Guava中的Service接口及其抽象实现。我很确定该界面(以及其他类似的界面)通常是该文档所指的。无论如何,它是基本的基础设施。

至于您的服务在启动或关闭时实际需要什么,这取决于服务本身。在示例中,网络服务器服务可能会在启动时开始侦听端口,并在停止时停止侦听。连接池在启动时可能会获取一些连接,并且在停止时需要释放它持有的任何连接。

于 2011-10-05T00:09:57.577 回答