Мое приложение также использовало другую платформу, и в результате я явно в файле web.xml указано, какие запросы должны обрабатываться Spring DispatcherServlet, например:
Код: Выделить всё
dispatcher
org.springframework.web.servlet.DispatcherServlet
3
dispatcher
*.s
dispatcher
*.json
В Spring Boot это больше невозможно, для DispatcherServlet установлено значение "/". Меня это не беспокоит, я считаю, что это правильная политика. Однако в моем приложении в содержании и коде очень много ссылок на URL-адреса с суффиксом «.s» или «.json». Например. "https://example.com/article.s?id={id}".
Мне бы хотелось избежать необходимости переписывать все вхождения "article.s" и контроллера. код для "article" и запрос от "article.s", как и раньше, обрабатывается @Controller с помощью @RequestMapping(value = "/article", params="id"). Аналогичная проблема возникает с контроллерами «.json». Кстати: в ванильном Spring мне не нужно было добавлять «.s» или «.json» в определение @RequestMapping — Spring MVC смог понять и проигнорировать этот суффикс в URL-адресе запроса. Это означает, что все контроллеры определяются следующим образом: @RequestMapping(value = "/someurl" ...) и не следующим образом: @RequestMapping(value = "/someurl.s" ...)
Как я могу обойти это?
Возможно, используя какой-нибудь механизм перезаписи URL-адресов (перезаписывая все запросы в "someurl.s"/"someurl .json" на "someurl")?
Обновить
Извините, я вижу, что в более старой версии Spring я использовал setUseSuffixPatternMatch метод в WebMvcConfigurer.configurePathMatch. В Spring 6 этот метод устарел, замены ему нет, скоро он будет удален.
Код: Выделить всё
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseSuffixPatternMatch(true);
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... r-custom-s