Я планирую перенести свое старое приложение на Spring-Boot.
Я хочу перестать использовать дескриптор web.xml и зарегистрировать старый чистый сервлет (с включенной поддержкой асинхронности) и связанный с ним ServletContextListener.
Как зарегистрировать сервлет с включенной асинхронной поддержкой в Spring-Boot?
Ответы (3)
Spring Boot автоматически зарегистрирует любые Servlet
bean-компоненты в контексте вашего приложения с контейнером сервлета. По умолчанию поддерживаемый асинхронный режим установлен на true
, поэтому вам не нужно ничего делать, кроме создания bean-компонента для вашего Servlet
.
Если по какой-либо причине вы хотите получить больший контроль над регистрацией вашего сервлета, то вместо того, чтобы выставлять сам сервлет как bean-компонент, вы можете обернуть его в файл ServletRegistrationBean
.
Поместите @EnableAsync в свой класс приложения. Подробнее см. здесь.
servletRegistrationBean.isAsyncSupported()
по умолчанию равно true
, который определяет, поддерживается ли функция Async или нет.
Если вы столкнулись с проблемой ниже, перейдите по ссылке
java.lang.IllegalArgumentException: поддержка асинхронного режима должна быть включена для сервлета и для всех фильтров, задействованных в обработке асинхронного запроса. Это делается в коде Java с помощью Servlet API или путем добавления «true» к объявлениям сервлета и фильтра в web.xml. Также вы должны использовать контейнер Servlet 3.0+