Как предотвратить загрузку контекста Spring при исключении в ServletContextListener?

Я повышаю весенний контекст, используя ContextLoaderListener. Перед этим в web.xml у меня есть собственный слушатель, который выполняет некоторые проверки. Если эти проверки не пройдены, я не хочу запускать контекст Spring.

Как я могу предотвратить загрузку контекста Spring, если у меня было исключение в другом слушателе?

Я бы поместил какой-нибудь атрибут в ServletContext, но не знаю, как это может повлиять на загрузку spring ctx.

Вот очень похожий вопрос: Остановить развертывание при возникновении исключения в ServletContextListener


person Kirill    schedule 09.11.2016    source источник


Ответы (1)


Вот что я сделал, чтобы решить эту проблему:

В моем слушателе, где я выполняю некоторые проверки, если что-то не так, я устанавливаю атрибут в контекст сервлета

@Override
public void contextInitialized(ServletContextEvent sce) {
sce.getServletContext().setAttribute("checkFailed", true);
}

Затем я расширил Spring ContextLoaderListener и переопределил contextInitialized следующим образом:

@Override
public void contextInitialized(ServletContextEvent event) {
    if (event.getServletContext().getAttribute("checkFailed") != null) {
        return;
    }
    super.contextInitialized(event);
}
person Kirill    schedule 09.11.2016