Пожизненное управление с Google Guice

Позвольте мне заключать в кавычки Завершенный Код Steve McConnell. Раздел по Утверждениям 8.2.

Обычно, Вы не хотите, чтобы пользователи видели сообщения утверждения в производственном коде; утверждения, прежде всего, для использования во время разработки и обслуживания. Утверждения обычно компилируются в код во время разработки и компилируются из кода для производства.

Однако позже в том же разделе, этот совет дан:

Для очень устойчивого кода, утверждайте и затем обработайте ошибку так или иначе.

я думаю, что, пока производительность не является проблемой, оставьте утверждение внутри, а скорее, чем дисплей сообщение, имейте ее, пишут в файл журнала. Я думаю, что совет находится также в Завершенном Коде, но я не нахожу его прямо сейчас.

8
задан ripper234 4 November 2009 в 15:23
поделиться

1 ответ

Я хочу, чтобы это был детерминированный шаг (не «когда-нибудь, когда GC запустится»).

Извините, но тогда Java - неподходящий язык для вас. Инфраструктура DI не знает, когда все ссылки на объект исчезли. Только сборщик мусора знает об этом.

Если у вас есть «закрываемый» ресурс, используйте шаблон try / finally, чтобы закрыть его (см. Ниже).

Closable c = // ...
try {
   c.use();
} finally {
   c.close();
}

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

(О, и +1 к ColinD - поставщики инъекций. :)

РЕДАКТИРОВАТЬ : Guiceyfruit швы для поддержки Lifecycles

2
ответ дан 6 December 2019 в 01:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: