@Schema description в Swagger UI

Пишу эту статью, потому что уже который раз сталкиваюсь с этой проблемой. И каждый раз трачу несколько часов, чтобы вспомнить, что проблемы нет. Каждый раз мне кажется, что Swagger UI не отображает описание из атрибута description аннотации @Schema из пакета io.swagger.v3.oas.annotations.media.

Читать далее @Schema description в Swagger UI

JPA Query getSingleResult NoResultException

Метод jakarta.persistence.Query#getSingleResult бросает исключение NoResultException, если не находит ни одного результата. Несмотря на кажущуюся полезность, это не приносит никакого облегчения. Это не исключительная ситуация. Пустой результат запроса — это тоже результат, а не ошибка логики или программиста.

Читать далее JPA Query getSingleResult NoResultException

No bean named ‘mvc­Handler­Mapping­Introspector’ available

Ошибка вида:

No bean named ‘mvcHandlerMappingIntrospector’ available: A Bean named mvcHandlerMappingIntrospector of type org.springframework.web.servlet.handler.HandlerMappingIntrospector is required to use MvcRequestMatcher. Please ensure Spring Security & Spring MVC are configured in a shared ApplicationContext

возникает, когда Spring Security и Spring MVC расположены в разных контекстах: корневом и контексте сервлета. Смысл подобного разделения описан в моей старой статье.

Читать далее No bean named ‘mvc­Handler­Mapping­Introspector’ available

HiddenHttpMethodFilter

Что на самом деле делает HiddenHttpMethodFilter?

Я долгое время считал, что он просто включает поддержку дополнительных методов PUT, PATCH и DELETE. Однако в процессе написания книги я понял, что в реальности задача HiddenHttpMethodFilter совсем другая.

Протокол HTTP поддерживает методы PUT, PATCH и DELETE, но HTML с тегом form поддерживает только GET и POST. HiddenHttpMethodFilter позволяет использовать дополнительное скрытое поле _method, в котором передаётся название метода PUT, PATCH или DELETE, но при этом сама форма отправляется на сервер с помощью POST или GET.

Два SecurityFilterChain в Spring

Иногда бывает необходимость настроить разные SecurityFilterChain для разных разделов сайта или для разных REST-сервисов. Это, на самом деле, довольно просто.

Как работают несколько SecurityFilterChain в одном приложении описано в документации по Spring Security.

Читать далее Два SecurityFilterChain в Spring

Spring Security Custom Filter

Эта статья является частью книги про Spring Framework, которая по планам должна выйти где-нибудь в 2024 году, ну в крайнем случае в 2025, если не все будет получаться.

Spring Security уже содержит стандартные фильтры, поддерживающие HTTP Basic аутентификацию, аутентификацию с паролем и логином с формы, аутентификацию на основе сертификатов и многие другие. Однако мы можем также написать свой собственный фильтр, благодаря которому мы сможем отправлять логин и пароль внутри JSON в POST-запросе к нашему сервису.

Читать далее Spring Security Custom Filter

PageNotFound — No mapping for GET … JSP / JSPX

Довольно странная ошибка, на самом деле:

Сами контроллеры отрабатывают, не отрабатывает именно viewResolver, объявленный в XML-конфигурации (проект старый, был создан ещё в эпоху XML-конфигураций для Spring, без Spring Boot):

Читать далее PageNotFound — No mapping for GET … JSP / JSPX

Apache Tiles в Spring Framework 6

Куда делся Apache Tiles в Spring Framework 6? Проблема достаточно серьезна, так как многие проекты сильно завязались на нём. Сам проект Apache Tiles больше не разрабатывается, а на его странице висит плашка:

Читать далее Apache Tiles в Spring Framework 6

Apache Tomcat 10 и JSTL

Apache Tomcat 10 согласно официальной документации реализует спецификацию Java Server Pages 2.3. Немного староватая спецификация, так как уже есть 3.0, но всё же неплохо:

Читать далее Apache Tomcat 10 и JSTL