Почему необходимо переопределить только init() метод без аргументов
Метод init() без аргументов следует переопределять вместо init(ServletConfig config), чтобы избежать ошибки с пропущенным вызовом super.init(config). Класс GenericServlet вызывает init() без аргументов в конце метода init(ServletConfig config) — это паттерн Template Method.
Если переопределить init(ServletConfig config) и забыть вызвать super.init(config), объект ServletConfig не будет сохранён, и последующие вызовы getServletConfig() вернут null. Это приведёт к NullPointerException в runtime. Переопределение безаргументного init() гарантирует, что GenericServlet корректно сохранит ServletConfig до вызова пользовательского кода инициализации.
Пример
// Правильно: переопределяем init() без аргументов
@Override
public void init() throws ServletException {
// инициализация данных
}
На собеседовании: вопрос проверяет понимание паттерна Template Method и двухфазной инициализации в Servlet API. Частая ошибка — путать
init()иinit(ServletConfig).