Сообщения

Показаны сообщения с ярлыком "Spring Web MVC"

Spring Boot: MVC Security

Изображение
Конфигурация безопасности по умолчанию реализована в SecurityAutoConfiguration и UserDetailsServiceAutoConfiguration. SecurityAutoConfiguration импортирует SpringBootWebSecurityConfiguration для веб-безопасности, а UserDetailsServiceAutoConfiguration настраивает проверку подлинности (аутентификацию), что также актуально для не веб-приложений. Чтобы полностью отключить конфигурацию безопасности веб-приложения по умолчанию или объединить несколько компонентов Spring Security, таких как клиент OAuth 2 и сервер ресурсов (Resource Server), добавьте bean-компонент типа WebSecurityConfigurerAdapter (при этом не отключается конфигурация UserDetailsService или защита Actuator). Чтобы также отключить конфигурацию UserDetailsService, вы можете добавить компонент типа UserDetailsService, AuthenticationProvider или AuthenticationManager. Правила доступа могут быть переопределены путем добавления пользовательского адаптера WebSecurityConfigurerAdapter. Spring Boot предоставляет удобные методы, кот...

Spring Boot: Spring HATEOAS, поддержка CORS

Изображение
Spring HATEOAS Если вы разрабатываете RESTful API, который использует hypermedia, Spring Boot предоставляет автоконфигурацию для Spring HATEOAS, которая хорошо работает с большинством приложений. Автоконфигурация заменяет необходимость использования @EnableHypermediaSupport и регистрирует ряд bean-компонентов для упрощения создания приложений на основе hypermedia, включая LinkDiscoverers (для поддержки на стороне клиента) и ObjectMapper, настроенный для правильного маршалинга ответов в желаемое представление. ObjectMapper настраивается путем установки различных свойств spring.jackson.* или, если таковые существуют, bean Jackson2ObjectMapperBuilder. Вы можете контролировать конфигурацию Spring HATEOAS с помощью @EnableHypermediaSupport. Обратите внимание, что это отключает настройку ObjectMapper, выполняемую автоматически. Поддержка CORS Совместное использование ресурсов между источниками (CORS, Cross-origin resource sharing) - это спецификация W3C, реализованная большинством браузе...

Spring Boot: пользовательские страницы ошибок

Изображение
Если вы хотите отобразить пользовательскую страницу ошибок HTML для данного кода состояния, вы можете добавить файл в папку /error. Страницы ошибок могут быть либо статическим HTML (то есть добавленным в любую из папок статического ресурса), либо построены с использованием шаблонов. Имя файла должно быть точным кодом состояния или последовательной маской. Например, чтобы отобразить 404 в статический HTML-файл, структура вашей папки будет выглядеть следующим образом: src/ +- main/ +- java/ | + +- resources/ +- public/ +- error/ | +- 404.html +- Чтобы отобразить все ошибки 5xx с помощью шаблона FreeMarker, структура вашей папки будет выглядеть следующим образом: src/ +- main/ +- java/ | + +- resources/ +- templates/ +- error/ | +- 5xx.ftlh +- Для более сложных отображений вы также можете добавить bean-компоненты, которые реализуют инте...

Spring Boot: обработка ошибок

Изображение
По умолчанию Spring Boot предоставляет отображение /error, которое разумным образом обрабатывает все ошибки и регистрируется как “global” страница ошибок в контейнере сервлета. Для машинных клиентов он генерирует ответ JSON с подробной информацией об ошибке, статусе HTTP и сообщении об исключении. Для клиентов браузера есть представление ошибок “whitelabel”, которое отображает те же данные в формате HTML (чтобы настроить его, добавьте View, который разрешает ошибку). Чтобы полностью заменить поведение по умолчанию, вы можете реализовать ErrorController и зарегистрировать определение компонента этого типа или добавить компонент типа ErrorAttributes, чтобы использовать существующий механизм, но заменить содержимое. BasicErrorController может использоваться в качестве базового класса для пользовательского ErrorController. Это особенно полезно, если вы хотите добавить обработчик для нового типа контента (по умолчанию используется специальная обработка text/html и предоставление запасного ...

Spring Boot: шаблонизаторы

Изображение
Помимо REST веб-служб, вы также можете использовать Spring MVC для обслуживания динамического HTML-контента. Spring MVC поддерживает множество шаблонных технологий, включая Thymeleaf, FreeMarker и JSP. Кроме того, многие другие движки шаблонов включают свои собственные интеграции Spring MVC. Spring Boot включает поддержку автоматической настройки для следующих шаблонизаторов: FreeMarker Groovy Thymeleaf Mustache По возможности следует избегать JSP. Существует несколько известных ограничений при их использовании со встроенными сервлет-контейнерами. Когда вы используете один из этих шаблонизаторов с конфигурацией по умолчанию, ваши шаблоны автоматически выбираются из src/main/resources/templates. В зависимости от того, как вы запускаете ваше приложение, IntelliJ IDEA упорядочивает путь к классам по-разному. Запуск приложения в среде IDE из main метода приводит к другому порядку, чем при запуске приложения с помощью Maven или Gradle или из его упакованного jar-файла. Это может п...

Spring Boot: пользовательские сериализаторы и десериализаторы JSON

Изображение
Если вы используете Jackson для сериализации и десериализации данных JSON, вы можете написать свои собственные классы JsonSerializer и JsonDeserializer. Пользовательские сериализаторы обычно регистрируются в Jackson через модуль, но Spring Boot предоставляет альтернативную аннотацию @JsonComponent, которая упрощает непосредственную регистрацию Spring Beans. Вы можете использовать аннотацию @JsonComponent непосредственно в реализациях JsonSerializer, JsonDeserializer или KeyDeserializer. Вы также можете использовать его в классах, которые содержат сериализаторы/десериализаторы в качестве внутренних классов, как показано в следующем примере: import java.io.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; import org.springframework.boot.jackson.*; @JsonComponent public class Example { public static class Serializer extends JsonSerializer { // ... } public static class Deserializer extends JsonDeserializer { // ... }...

Spring Boot: HttpMessageConverters

Изображение
Spring MVC использует интерфейс HttpMessageConverter для преобразования HTTP-запросов и ответов. Разумные значения по умолчанию включены "из коробки". Например, объекты могут быть автоматически преобразованы в JSON (с помощью библиотеки Jackson) или XML (с помощью расширения Jackson XML, если оно доступно, или с помощью JAXB, если расширение Jackson XML недоступно). По умолчанию строки кодируются в UTF-8. Если вам нужно добавить или настроить конвертеры, вы можете использовать класс Spring Boot HttpMessageConverters, как показано в следующем листинге: import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.context.annotation.*; import org.springframework.http.converter.*; @Configuration(proxyBeanMethods = false) public class MyConfiguration { @Bean public HttpMessageConverters customConverters() { HttpMessageConverter additional = ... HttpMessageConverter another = ... return new HttpMessage...

Spring Boot: автоконфигурация Spring MVC

Изображение
Spring Boot обеспечивает автоматическую настройку Spring MVC, которая хорошо работает с большинством приложений. Автоконфигурация добавляет следующие функции поверх стандартных настроек Spring: Включение компонентов ContentNegotiatingViewResolver и BeanNameViewResolver. Поддержка обслуживания статических ресурсов, включая поддержку WebJars). Автоматическая регистрация компонентов Converter, GenericConverter и Formatter. Поддержка HttpMessageConverters. Автоматическая регистрация MessageCodesResolver. Поддержка статического index.html. Поддержка пользовательского Favicon. Автоматическое использование bean-компонента ConfigurableWebBindingInitializer. Если вы хотите сохранить эти настройки Spring Boot MVC и выполнить дополнительные настройки MVC (перехватчики, средства форматирования, контроллеры представления и другие функции), вы можете добавить свой собственный класс @Configuration типа WebMvcConfigurer, но без @EnableWebMvc. Если вы хотите предоставить пользовательские э...

Spring Boot: разработка веб-приложений

Изображение
Spring Boot хорошо подходит для разработки веб-приложений. Вы можете создать автономный HTTP-сервер, используя встроенные Tomcat, Jetty, Undertow или Netty. Большинство веб-приложений используют модуль spring-boot-starter-web для быстрой подготовки и запуска. Вы также можете создавать реактивные веб-приложения с помощью модуля spring-boot-starter-webflux. Spring Web MVC Framework Фреймворк Spring Web MVC (часто называемая просто "Spring MVC") представляет собой богатый "model view controller" веб-фреймворк. Spring MVC позволяет создавать специальные bean-компоненты @Controller или @RestController для обработки входящих HTTP-запросов. Методы в вашем контроллере отображаются на HTTP с помощью аннотаций @RequestMapping. Следующий код показывает типичный @RestController, который обслуживает данные JSON: @RestController @RequestMapping(value="/users") public class MyRestController { @RequestMapping(value="/{user}", method=RequestMethod.GET...