Книга Марка Хеклера «Spring Boot по-быстрому»

«Любой автор сам выбирает, что включать в издание, что не включать…
То, что одному автору кажется необязательным материалом,
другой считает совершенно необходимым»

Цитата из предисловия.

Привет всем! Как-то так сложилось, что в последнее время посты в этом блоге посвящены всего двум темам: книгам и OutWiker-у. В этот раз речь пойдет опять о программерской книге. Недавно в посте о книге Крейга Уоллса «Spring в действии» я писал, что на русском языке вышла еще одна книга про Spring — «Spring Boot по-быстрому» Марка Хеклера. Вот про нее сейчас и поговорим.

Честно говоря, книга оставила какое-то неоднозначное ощущение. Некоторые темы здесь описаны чуть более подробно, чем это сделано в книге «Spring в действии», но больше данная книга напоминает серию постов в блоге, когда автор рассказывает о возможностях фреймворка на конкретном примере с длинными листингами программ (зачастую слишком длинными), но при этом книгу нужно читать последовательно, потому что автор описывает рефакторинг одного и того же кода из главы в главу.

Подзаголовок книги «Создаем облачные приложения на Java и Kotlin» может в вести в заблуждение тем, что Kotlin, конечно, упоминается, говорится, что есть такой язык, есть даже один пример микросервиса, который написан на этом языке, но в целом концентрация Kotlin в общем содержании настолько мала, что ей можно пренебречь. В данном случае я бы сказал, что это скорее хорошо, что содержание не распыляется на два языка, и даже там, где Kotlin используется, это выглядит немного странно. Наверное, единственная цель этого примера — показать, что со Spring можно работать и на Kotlin, но уж точно это не стоило выносить на обложку книги.

Объем книги не такой большой, около 350 страниц, далее я коротко пробегусь по ее содержанию.

Начало книги было многообещающим, автор в первой главе начал рассказывать о том, что обычно не пишут в книгах про Spring, а именно то, каким образом Spring Boot упаковывает jar-файлы, и чем они отличаются от «классических» jar-файлов, который создаются с помощью шейдинга (shading). В одной из последних глав он к этой теме еще вернется, когда будет рассматриваться вопрос о развертывании приложений, написанных с использованием Spring Boot. Я надеялся, что и дальше в книге будут описаны такие низкоуровневые интересные штуки. Но ожидания не очень оправдались.

Последующее повествование пошло по стандартному сценарию у подобных книг, и следующая глава посвящена инструментам, с помощью которых можно создавать новые проекты со Spring Boot. Сначала коротко рассказывается о Maven и Gradle, упоминается, что есть такой язык как Kotlin с очень кратким описанием того, чем он отличается от Java, говорится о том, что шаблон нового проекта можно сгенерировать на сайте Spring Initializr, а потом рассказывается о таком инструменте как sdkman, предназначенном для удобной установки и работы с разными версиями JDK и другими SDK (вот это был еще один действительно полезный момент в книге). После этого автор показывает, как можно создать новый проект с использованием командной строки. Вот чем мне книжка понравилась, это тем, что автор периодически упоминает интересные инструменты, о которых я до этого не слышал.

После этого автор пишет примерно о тех же стандартных темах, что и в других книгах про Spring. Начинается все с приложения, реализующего REST API. В принципе, автор старается описывать используемые аннотации из Spring достаточно аккуратно, и если он использует какую-то аннотацию, которая объединяет в себе несколько других аннотаций, то он об этом говорит.

После этого следует глава о работе с базами данных. В качестве СУБД автор использует H2, чтобы не отвлекаться на установку и настройку MySQL или PostgreSQL. Если вы уже работали с базами данных в Spring, то никаких особых откровений вы не узнаете, в ней используются простейшие методы для сохранения / получения объектов без использования каких-то сложных запросов, и знать SQL не требуется.

Одна из самых полезных, на мой взгляд, глав посвящена конфигурации приложений. Автор аккуратно перечисляет почти два десятка мест, в которых можно задавать конфигурацию приложения, включая переменные окружения, параметры командной строки, файлы .properties и YAML, а также места, использовать которые можно только внутри исходного кода, в том числе работающих только с тестами. В этой главе автор рассказывает, как делать свои настройки и привязывать их к классам для более удобного доступа. Здесь же автор рассказывает о библиотеке Spring Boot Actuator, предназначенного для мониторинга приложения. Надо сказать, что описывает он его достаточно подробно, рассказывает о его настройках и не забывает напоминать о безопасности (про Spring Security будет отдельная глава).

После этого автор еще раз возвращается к теме хранения данных, чтобы рассказать о работе с ними более подробно. В этой главе будет целый зоопарк используемых баз данных. В первом примере используется Redis, а для доступа к данным класс RedisTemplate. После этого в этой же главе рассказывается о работе с данными с помощью репозиториев, а в качестве БД автор переключается на MySQL. После этого приводит еще один пример сервиса, который использует MongoDB (и это именно тот единственный пример, который написан на Kotlin). А затем приводит еще один пример с использованием графовой базы данных Neo4j. Все эти примеры достаточно простые и толком не позволяют понять принципиальные отличия одной БД от другой, если вы с ними до этого не работали. Про репозитории автор пишет очень поверхностно и не показывает, как можно писать сколь-нибудь сложные запросы.

Еще одна глава посвящена работе с шаблонами при использовании Spring MVC (Model — View — Controller). В качестве шаблонизатора в примерах используется Thymeleaf. Хотя в примере шаблон для Thymeleaf использует несколько интересных не совсем тривиальных подстановок, но про сам шаблонизатор говорится очень мало, не более того, что используется в примере. В этой же главе на примерах демонстрируется работа с брокером сообщений RabbitMQ, а затем пример переделывают таким образом, чтобы показать работу с WebSocket-ами.

В следующей главе автор очень коротко рассказывает про реактивное программирование с помощью Project Reactor и WebFlux, делает рефакторинг предыдущих примеров, чтобы сделать их реактивными, а затем показывает, как можно использовать протокол RSocket, который может работать поверх TCP, WebSocket и Aeron.

Затем примерно на 20 страницах рассказывается о тестировании приложений. Несмотря на небольшой объем этой главы, некоторые полезные моменты я для себя из нее вынес. Там достаточно неплохо описаны аннотации, которые можно применять для классов тестов, и показано, где можно ускорить выполнение тестов за счет использования mock-объектов.

После этого автор рассказывает про Spring Security, аутентификацию и авторизацию, показывает, как пользователям можно давать разные права на доступ. А после этого рассказывает про использование протоколов OpenID и OAuth2. В качестве сервера OAuth2 (поставщика аутентификации) в примерах используется инфраструктура от Okta.

После этого автор опять возвращается к теме развертывания приложений, с которой начиналась книга, но теперь еще более подробно рассказывает о содержании jar-файла, который создается с помощью Spring Boot. Здесь немного говорится о сборке docker-контейнеров для приложений, написанных с использованием Spring Boot.

И в последней главе автор внезапно возвращается снова к теме реактивного программирования, но теперь делает упор на тестирование и отладку таких приложений. Вот раздел про отладку оказался очень интересным, там автор рассказывает про приемы и сторонние библиотеки, которые позволяют локализовать проблему в длинной череде вызовов реактивных функций.

Книга мне понравилась первыми и последними главами, а в середине как-то так… Если вы только собираетесь изучать Spring, то с этой книги начинать не стоит, но если вы уже что-то делали с использованием этого фреймворка и хотите узнать, что еще интересного есть в Spring, то в качестве второй книги она вполне подойдет. В то же время, если у вас уже есть серьезный опыт работы со Spring, то тут вы вряд ли найдете что-то новое. Поэтому книгу можно почитать не для того, чтобы разобраться со Spring, а как сборник статей, в которых автор описывает некоторые примеры — вдруг найдете что-то интересное для себя. Автор постарался разнообразить примеры и использовать разные базы данных и протоколы обмена данными между сервисами.

Больше всего в книжке мне понравилось, что автор периодически дает ссылки на полезные библиотеки и утилиты. Не понравился стиль подачи примеров. Иногда приходится пролистывать буквально страницы с простыней кода, где приводятся только get-ы и set-ы, а где-то целые страницы вывода стека вызовов. Ну и постоянное описание рефакторинга кода из предыдущей главы, чтобы подогнать его под описываемую тему тоже напрягало при чтении.

К переводу и редактуре никаких претензий нет. Я бы книжке поставил оценку 3+ (все-таки не 4-) из 5.

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Нет оценок)
Загрузка...

Leave a comment

Subscribe without commenting