Обработчики инициализации и уничтожения модулей в Guice? - PullRequest
1 голос
/ 05 октября 2011

Следующая ссылка описывает, как обрабатывать инициализацию и уничтожение модуля в Guice с использованием интерфейса Service с методами start () и stop ():

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);
}

Но не приводится ни одного примера реализации класса Concrete Service. Кто-нибудь может предоставить мне один? По крайней мере, пример реализации того, что содержат start () и stop ().

1 Ответ

2 голосов
/ 05 октября 2011

Посмотрите на интерфейс Service в Guava и его абстрактные реализации.Я почти уверен, что интерфейс (и другие подобные ему), как правило, относится к этой документации.В любом случае, это базовая инфраструктура.

То, что фактически нужно вашей службе для выполнения при запуске или завершении работы, зависит от самой службы.В этом примере служба веб-сервера может начать прослушивание портов при запуске и прекратить прослушивание при остановке.Пул соединений может получать некоторые соединения при его запуске и должен будет освободить все соединения, которые он удерживает, когда он останавливается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...