2013-09-05 3 views
-1

Оба ServletContextEventHandler и статический блок имеют высокий приоритет запуска. В использовании, в чем разница? Что должно быть помещено в обработчик событий SC и статический блок?Java ServletContextEventHandler и статический блок

Благодаря Мин

+0

Кодовый блок 'static' будет выполняться при загрузке класса, поэтому он будет выполнен первым. Было бы лучше, если бы вы опубликовали реальную конкретную выборку того, что вы пытаетесь достичь, а не просто спрашиваете. Обратите внимание, что это легко можно проверить с помощью 'System.out.println' в обоих случаях. –

ответ

3

Я думаю, что у вас есть непонимание жизненного цикла классов и объектов.

Блок static выполняется, когда класс загружен, и это более или менее зависит от ClassLoader, используемого вашей программой. В контексте static у вас есть доступ только к другим компонентам static.

Объект типа ServletContextEventHandler, с помощью которого я предполагаю, что вы имеете в виду ServletContextListener, это крюк, который вы можете использовать для доступа приложения ServletContext при инициализации, и когда он будет уничтожен.

+0

Для получения дополнительной информации о том, как работают загрузчики классов в java, обратитесь к http://stackoverflow.com/q/11395074/1065197 и другим ссылкам в сети, например http://javarevisited.blogspot.com/2012/12/how- classloader-works-in-java.html и http://www.javaworld.com/jw-10-1996/jw-10-indepth.html –

+0

И еще один: http://javarevisited.blogspot.ca/2012/ 07 /, когда класс-погрузо-инициализации Java-example.html- –

Смежные вопросы