spring boot 2 лучшие практики для профессионалов фелипе гутьеррес 2020
Книга «Spring Boot 2: лучшие практики для профессионалов»
Привет, Хаброжители! Хотите повысить свою эффективность в разработке корпоративных и облачных Java-приложений?
Увеличьте скорость и простоту разработки микросервисов и сложных приложений, избавившись от забот по конфигурации Spring.
Используйте Spring Boot 2 и такие инструменты фреймворка Spring 5, как WebFlux, Security, Actuator, а также фреймворк Micrometer, предоставляющий новый способ сбора метрик.
Фреймворк тестирования Spring
Одна из основных идей фреймворка Spring — поощрение создания разработчиками простых и слабо связанных классов, программирование интерфейсов, благодаря чему программное обеспечение становится более надежным и лучше расширяемым. Фреймворк Spring предоставляет инструменты, упрощающие модульное и интеграционное тестирование (на самом деле, если вы действительно программируете интерфейсы, для тестирования функциональности приложений Spring вам не нужен). Другими словами, необходимо, чтобы приложение можно было протестировать с помощью систем тестирования JUnit или TestNG на основе объектов (создаваемых просто с помощью оператора new — без Spring или какого-либо другого контейнера).
В фреймворк Spring включено несколько пакетов, предназначенных для модульного или интеграционного тестирования приложений. Для модульного тестирования предназначено несколько имитационных объектов (Environment, PropertySource, JNDI, Servlet; реактивные утилиты тестирования ServerHttpRequest и ServerHttpResponse), с помощью которых можно производить изоляционное тестирование кода.
Как вы видите, существует множество вариантов тестирования с помощью фреймворка Spring. Обычно всегда используется аннотация @RunWith, связывающая воедино все элементы фреймворка тестирования. Например:
Теперь взглянем, как следует использовать фреймворк тестирования Spring и какие возможности предоставляет Spring Boot.
Фреймворк тестирования Spring Boot
Spring Boot использует мощь фреймворка тестирования Spring, расширяя старые и добавляя новые аннотации и возможности, благодаря которым для разработчиков тестирование значительно упрощается.
Чтобы начать применять все возможности тестирования Spring Boot, необходимо лишь добавить в приложение зависимость spring-boot-starter-test с указанием области видимости test (scope test). В сервисе Spring Initializr эта зависимость уже добавлена.
Зависимость spring-boot-starter-test обеспечивает возможность использования нескольких фреймворков тестирования, очень хорошо согласующихся с возможностями тестирования Spring Boot: JUnit, AssertJ, Hamcrest, Mockito, JSONassert и JsonPath. Конечно, существуют и другие фреймворки тестирования, отлично работающие с модулем Spring Boot Test; просто соответствующие зависимости нужно указывать вручную.
Spring Boot предоставляет аннотацию @SpringBootTest, упрощающую тестирование приложений Spring. Обычно при тестировании приложения Spring необходимо добавить несколько аннотаций для тестирования конкретной возможности или функциональности приложения, но не в Spring Boot — хотя для тестирования все равно нужно указать аннотацию @RunWith(SpringRunner.class); если этого не сделать, любые новые аннотации тестирования Spring Boot будут проигнорированы. У аннотации @SpringBootTest есть полезные для тестирования веб-приложений параметры, например RANDOM_PORT и DEFINED_PORT.
Следующий фрагмент кода представляет собой каркас теста Spring Boot.
Тестирование конечных точек веб-приложения
Spring Boot предоставляет удобный способ тестирования конечных точек: имитационную среду под названием класс MockMvc:
Можно также воспользоваться классом TestRestTemplate.
В этом коде показан тест, запускающий полноценный сервер и использующий экземпляр класса TestRestTemplate для обращения к конечной точке /todo. Здесь мы предполагаем, что возвращается объект String (это не лучший способ тестирования возврата JSON; не волнуйтесь, далее мы покажем, как использовать класс TestRestTemplate правильно).
Имитация компонент
Модуль тестирования Spring Boot предоставляет аннотацию @MockBean, описывающую имитационный объект Mockito для компонента в ApplicationContext. Другими словами, можно создать имитацию нового компонента Spring или заменить уже существующее определение, добавив эту аннотацию. Помните: все это происходит внутри ApplicationContext.
Тестовые срезы Spring Boot
Одна из важнейших возможностей Spring Boot — выполнение тестов без необходимости в какой-то определенной инфраструктуре. Модуль тестирования Spring Boot включает так называемые срезы (slices), предназначенные для тестирования конкретных частей приложения без использования сервера или СУБД.
Аннотация @JsonTest
В модуле тестирования Spring Boot есть аннотация @JsonTest, упрощающая сериализацию/десериализацию JSON-объектов и проверяющая, все ли работает корректно. @JsonTest автоматически настраивает поддерживаемое средство JSON-отображения, в зависимости от найденной по пути к классам библиотеки: Jackson, GSON или JSONB.
Для тестирования контроллеров без использования полноценного сервера можно воспользоваться предлагаемой Spring Boot аннотацией @WebMvcTest, которая автоматически настраивает инфраструктуру Spring MVC и ограничивает список просматриваемых компонентов следующими: Controller, ControllerAdvice, @JsonComponent, Converter, GenericConverter, Filter, WebMvcConfigurer и HandlerMethodArgumentResolver; благодаря этому вы будете знать, так ли работают ваши контроллеры, как ожидалось.
Важно понимать, что помеченные как Component компоненты не просматриваются при использовании этой аннотации, но при необходимости можно применить аннотацию @MockBean.
Аннотация @WebFluxTest
Для реактивных контроллеров Spring Boot предоставляет аннотацию @WebFluxTest. Эта аннотация автоматически настраивает инфраструктуру модуля Spring WebFlux и ищет только Controller, ControllerAdvice, @JsonComponent, Converter, GenericConverter и WebFluxConfigurer.
Важно понимать, что помеченные как Component компоненты не просматриваются при использовании этой аннотации, но при необходимости вы можете применить аннотацию @MockBean.
Аннотация @DataJpaTest
Для тестирования JPA-приложений модуль тестирования Spring Boot предоставляет аннотацию @DataJpaTest, производящую автоконфигурацию встроенных баз данных, размещаемых в оперативной памяти. Она ищет Entity и не загружает никаких компонентов Component. Кроме того, она предоставляет вспомогательный класс TestEntityManager, ориентированный на тестирование, очень похожий на класс JPA EntityManager.
Учтите, что при тестировании с помощью @DataJpaTest используются встроенные СУБД в оперативной памяти. Для тестирования же с настоящей базой данных необходимо снабдить класс теста аннотацией @AutoConfigureTestDatabase(replace=Replace.NONE).
Аннотация @JdbcTest
Эта аннотация очень похожа на @DataJpaTest; единственное отличие — она выполняет ориентированные исключительно на JDBC тесты. Она производит автоматическую настройку встроенной СУБД, размещаемой в оперативной памяти, и класса JdbcTemplate, пропуская при этом все снабженные аннотацией Component классы.
Аннотация @DataMongoTest
Для тестирования приложений MongoDB модуль тестирования Spring Boot предоставляет аннотацию @DataMongoTest. Она производит автоматическую настройку встроенного размещаемого в оперативной памяти сервера Mongo, если он доступен; если же нет, необходимо добавить нужные свойства spring.data.mongodb.*. Она также производит настройку класса MongoTemplate и ищет аннотации @Document. Компоненты Component пропускаются.
При потребности во внешнем сервере MongoDB (невстроенном, размещаемом в оперативной памяти) добавьте в аннотацию @DataMongoTest параметр excludeAutoConfiguration = EmbeddedMongoAutoConfiguration.class.
Аннотация @RestClientTest
Еще одна важная аннотация — @RestClientTest, предназначенная для тестирования REST-клиентов. Эта аннотация автоматически производит настройки для поддержки Jackson, GSON и JSONB, а также настраивает класс RestTemplateBuilder и добавляет поддержку MockRestServiceServer.
Существует множество других доступных для использования срезов. Главное, запомнить: для тестирования необязательна полная инфраструктура со всеми запущенными серверами. Упростить тестирование приложений Spring Boot позволяют срезы.
Об авторе
Фелипе Гутьеррес (Felipe Gutierrez) — архитектор ПО, получивший дипломы бакалавра и магистра в области вычислительной техники в Институте технологий и высшего образования города Монтеррей, Мексика. У Гутьерреса более 20 лет опыта в сфере IT, он разрабатывал программы для компаний из множества вертикально интегрированных отраслей, таких как государственное управление, розничная торговля, здравоохранение, образование и банковское дело. В настоящее время он работает в компании Pivotal, специализируясь на PAS и PKS для Cloud Foundry, фреймворке Spring, нативных облачных приложениях Spring, Groovy и RabbitMQ, помимо прочих технологий. Он также был архитектором ПО в таких крупных компаниях, как Nokia, Apple, Redbox и Qualcomm. Гутьеррес — автор книг Spring Boot Messaging (Apress, 2017) и Introducing Spring Framework (Apress, 2014).
О научных редакторах
Оригинальное издание
Мануэль Жордан Элера (Manuel Jordan Elera) — разработчик-самоучка и исследователь, обожает изучать новые технологии для своих экспериментов и новых их сочетаний. Мануэль получил премии Springy Award Community Champion и Spring Champion 2013. Немногое имеющееся у него свободное время он посвящает чтению Библии и сочинению музыки на гитаре. Мануэль известен под интернет-псевдонимом dr_pompeii. Он осуществлял научную редактуру многих книг, включая Pro Spring, 4-е издание (Apress, 2014)1, Practical Spring LDAP (Apress, 2013), Pro JPA 2, 2-е издание (Apress, 2013) и Pro Spring Security (Apress, 2013).
Русскоязычное издание
Валерий Алексеевич Дмитрущенков работает в IT более 35 лет. Разрабатывал программное обеспечение для множества компаний и отраслей, руководил многими комплексными проектами, включая разработку, внедрение и сопровождение автоматизированных систем. Участвовал в создании крупных проектов для государственных органов, реализованных международными организациями: ООН, USIAD, World Bank в России, Косово, Молдавии и Армении.
Для Хаброжителей скидка 25% по купону — Spring Boot
По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Фелипе Гутьеррес | Spring Boot 2. Лучшие практики для профессионалов (2020) [PDF]
Фелипе Гутьеррес | Spring Boot 2. Лучшие практики для профессионалов (2020) [PDF] Автор: Фелипе Гутьеррес
Издательство: Питер
Серия: Библиотека программиста
ISBN: 978-5-4461-1587-7
Жанр: Программирование
Формат: PDF
Качество: Изначально электронное (ebook)
Иллюстрации: Черно-белые
Описание:
Хотите повысить свою эффективность в разработке корпоративных и облачных Java-приложений?
Увеличьте скорость и простоту разработки микросервисов и сложных приложений, избавившись от забот по конфигурации Spring.
Используйте Spring Boot 2 и такие инструменты фреймворка Spring 5, как WebFlux, Security, Actuator, а также фреймворк Micrometer, предоставляющий новый способ сбора метрик.
В этой кнге: настройка и использование Spring Boot 2; работа с нефункциональными требованиями с помощью Spring Boot Actuator; разработка веб-приложений с помощью Spring Boot 2; постоянное хранение данных с использованием JDBC, JPA и баз данных NoSQL; обмен сообщениями с помощью JMS, RabbitMQ и WebSockets; краткое знакомство с проектами Spring Cloud; тестирование, микросервисы и развертывание в облачной среде с использованием Spring Boot 2; расширение Spring Boot путем создания своего собственного «стартового набора» и добавления функциональности @Enable.
Spring boot 2 лучшие практики для профессионалов фелипе гутьеррес 2020
Java запись закреплена
Felipe Gutierrez | Pro Spring Boot 2, 2nd Edition / (2019) [PDF/ePub] [En]
#JavaBooks@javatutorial #Spring@javatutorial
Quickly and productively develop complex Spring applications and microservices out of the box, with minimal concern over things like configurations. This revised book will show you how to fully leverage the Spring Boot 2 technology and how to apply it to create enterprise ready applications that just work. It will also cover what’s been added to the new Spring Boot 2 release, including Spring Framework 5 features like WebFlux, Security, Actuator and the new way to expose Metrics through Micrometer framework, and more.
This book is your authoritative hands-on practical guide for increasing your enterprise Java and cloud application productivity while decreasing development time. It’s a no nonsense guide with case studies of increasing complexity throughout the book. The author, a senior solutions architect and Principal Technical instructor with Pivotal, the company behind the Spring Framework, shares his experience, insights and first-hand knowledge about how Spring Boot technology works and best practices.
Pro Spring Boot 2 is an essential book for your Spring learning and reference library.
What You Will Learn
Configure and use Spring Boot
Use non-functional requirements with Spring Boot Actuator
Carry out web development with Spring Boot
Persistence with JDBC, JPA and NoSQL Databases
Messaging with JMS, RabbitMQ and WebSockets
Test and deploy with Spring Boot
A quick look at the Spring Cloud projects
Microservices and deployment to the Cloud
Extend Spring Boot by creating your own Spring Boot Starter and @Enable feature
Who This Book Is For
Experienced Spring and Java developers seeking increased productivity gains and decreased complexity and development time in their applications and software services.