Spring быстро
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабын онлайн тегін оқу  Spring быстро

 

Лауренциу Спилкэ
Spring быстро
2022

Переводчик Е. Сандицкая (Полонская)

Литературный редактор Е. Быковская



 

Лауренциу Спилкэ

Spring быстро. — СПб.: Питер, 2022.

 

ISBN 978-5-4461-1969-1

© ООО Издательство "Питер", 2022

 

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

 

Предисловие

Появившись в начале 2000-х годов, фреймворк Spring быстро превзошел своего конкурента EJB по простоте модели программирования, разнообразию функций и интегрированным сторонним библиотекам. Со временем Spring превратился в наиболее обширный и зрелый из существующих фреймворков для разработки, доступных на каком-либо языке программирования. Главный конкурент Spring сошел с дистанции, когда компания Oracle прекратила работу над платформой Java EE 8 и сообщество взяло ее поддержку на себя, переименовав в Jakarta EE.

Согласно последним обзорам, фреймворк Spring является основой более половины Java-приложений. Это огромная кодовая база, поэтому изучить Spring критически важно, ведь в своем профессиональном развитии вы неизбежно столкнетесь с данной технологией. Я занимался созданием приложений на основе Spring в течение 15 лет, и сегодня практически все обучаемые мной разработчики из сотен компаний используют эту экосистему.

Реальность такова, что, несмотря на всю популярность Spring, довольно трудно найти качественные вводные материалы по данному фреймворку. Его справочная документация насчитывает несколько тысяч страниц. Там описываются всевозможные тонкости и детали, которые могут пригодиться в очень специфических сценариях, но начинающему разработчику нужно не это. Онлайновые видео­уроки и учебники не особенно привлекательны для изучающих фреймворк, а в немногих книгах по основам Spring зачастую уделяется слишком много места обсуждению тем, которые, как оказалось, не имеют отношения к современным проблемам разработки приложений. Однако в книге Лауренциу Спилкэ вы едва ли найдете что-нибудь лишнее: все изложенные здесь концепции постоянно встречаются в разработке любых Spring-приложений.

Данное издание аккуратно выведет вас на уровень, достаточный для быстрого достижения успеха в проекте, основанном на фреймворке Spring. Мой собственный опыт подготовки тысяч сотрудников показывает, что сейчас подавляющее большинство программистов, работающих на Spring, не понимают суть фреймворка так четко, как ее объясняет данная книга. Более того, разработчикам неизвестны многие подводные камни, о которых предупреждает книга. Считаю, что она обязательна к прочтению для любого разработчика, начинающего свой первый проект на Spring.

Та предусмотрительность, с которой Лауренциу предугадывает возможные вопросы читателей, доказывает его обширный опыт в преподавании Spring. Автор обращается к читателю тепло, по-дружески, благодаря чему изучать книгу легко и приятно. Издание имеет ясную, четкую структуру: я восхищаюсь тем, как сложные темы постепенно раскрываются и объясняются в основном материале, а затем повторяются в последующих главах.

Книга прекрасна также тем, что рассказывает читателю о фундаментальных проблемах преемственности проектов, в которых используется фреймворк Spring. Я обнаружил, что в экосистеме, построенной на Spring Boot, бывает очень полезно заглянуть за кулисы. А еще автор знакомит читателя с такими технологиями последнего поколения, как Feign-клиенты и даже реактивное программирование.

Желаю вам приятного чтения. Никогда не бойтесь закопаться в код, который кажется вам слишком сложным!

Виктор Рента,

Java-рыцарь, тренер и консультант

Введение

Делиться знаниями и создавать учебные материалы — мое хобби. Я не только разработчик программного обеспечения, но и преподаватель. С 2009 года я обучил Java тысячи разработчиков с разным уровнем опыта, от студентов университета до маститых специалистов из крупных корпораций. За последние несколько лет я пришел к выводу, что новички обязательно должны освоить Spring. Современные приложения больше не пишутся на чистых языках программирования — почти все они основаны на фреймворках. А поскольку в настоящее время Spring является самым популярным фреймворком для написания Java-приложений, именно с ним разработчику стоит познакомиться в первую очередь.

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

Технологии меняются быстро. Но меняются не только они. Необходимо также улучшать способы обучения этим технологиям. Несколько лет назад можно было изучить основы языка программирования и стать разработчиком, не имея никакого представления о фреймворках. Однако сейчас ситуация изменилась. Овладевание лишь тонкостями языка программирования больше не гарантия того, что вы быстро получите навыки, необходимые для работы в команде программистов. Сегодня я рекомендую разработчикам, освоив начальную базу, переходить к изучению одного из фреймворков для построения приложений. Spring, по моему мнению, — наилучший вариант, с которого следует начать. Понимание основ Spring откроет вам двери к другим технологиям. Таким образом вместо устаревшего линейного обучения вы получите нечто похожее на дерево, где каждая ветвь — это новый фреймворк, который вы будете осваивать параллельно с другими.

Я структурировал книгу так, чтобы вы захотели начать обучение Spring с ней. Постепенно, шаг за шагом, издание снабдит вас всеми необходимыми теоретическими знаниями и примерами, в которых описываемые темы будут продемонстрированы на практике. Надеюсь, данная книга принесет вам пользу, поможет быстро получить знания по Spring и откроет двери к дальнейшему изучению фреймворков.

Благодарности

Эта книга не появилась бы, если бы мне не помогали многие умные, профессио­нальные и доброжелательные люди.

Прежде всего, огромное спасибо моей жене Даниэле, которая всегда была рядом. Ее ценные замечания, бесконечная поддержка и ободрение невероятно мне помогли.

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

Большое спасибо всей команде издательского дома Manning за помощь в претворении моих идей в живую книгу. Особенно я признателен Марине Майклс, Алу Шереру и Джин-Франсуазе Морин за невероятную поддержку и профессионализм. Ваши советы оказали огромное влияние на мою книгу.

Хочу поблагодарить мою подругу Иоану Гез за рисунки, которые она сделала для этой книги. Она превратила мои мысли в забавные картинки.

Хочу также выразить признательность всем рецензентам, которые на каждом этапе создания книги оставляли невероятно полезные отзывы: Алену Ломпо, Александру Карпенко, Андреа-Карло Гранате, Андреа Пачолле, Андре-Дамиану Сакко, Эндрю Освальду, Бобби Лину, Бонни Малец, Кристиану Крейцер-Беку, Дэниэлу Карлу, Дэвиду-Лайелу Орпену, Деандре Рашону, Харинату Кунтамуккале, Ховарду Уоллу, Жерому Батону, Джиму Уэлшу, Жуану-Мигелю-Пиресу Диасу, Лучиану Энаке, Мэтту Д., Мэтью Грину, Микаэлю Бистрему, Младену Кнежичу, Натану Б. Крокеру, Пьеру-Мишелю Анселю, Раджешу Моханану, Рикардо Ди Паскуале, Суните Чоудхури, Тану Ви и Зохебу Айнапуру. Благодаря вам эта книга стала гораздо лучше.

Наконец, особая благодарность моим друзьям — Марии Китцу, Андреа Тудосе, Флорин Чукулеску и Даниэле Илеана за советы, которые они давали мне все время, пока я писал эту книгу.

О книге

Раз уж вы открыли эту книгу, предположу, что вы являетесь разработчиком программного обеспечения в экосистеме Java и решили, что вам стоит познакомиться со Spring. С помощью данного издания вы изучите основы Spring, даже если до сих пор ничего не знали о фреймворках в целом и, разумеется, о Spring в частности.

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

Когда вы дочитаете это издание, вы будете обладать такими крайне важными при разработке приложений навыками, как:

настройка и использование контекста Spring и внедрение зависимостей в Spring;

• разработка и использование аспектов;

• реализация веб-приложений;

• реализация обмена данными между приложениями;

• сохранение данных;

• тестирование реализаций.

Эта книга будет полезной:

• в повседневной работе с приложениями, использующими Spring;

• для успешного прохождения технического собеседования на позицию Java-разработчика;

для получения сертификата по Spring.

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

Кто должен прочитать эту книгу

Книга предназначена для тех разработчиков, которые владеют основами объектно-ориентированного программирования и концепциями Java и хотят изучить Spring с нуля либо освежить базовые знания по нему. От вас не требуется знакомство с каким-либо фреймворком, но нужно знать основы Java, поскольку именно этот язык используется в примерах, приводимых в книге.

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

Структура издания

Данная книга состоит из 15 глав, разделенных на две части. В первой части мы начнем обсуждение с простых примеров, где я покажу вам, как сообщить Spring о существовании вашего приложения. Затем мы выполним несколько примеров, чтобы вам стало понятно, на чем базируется любое реальное Spring-приложение. Закончив с основами Spring Core, мы перейдем к обсуждению Spring Data и Spring Boot.

Начиная с главы 2, теоретические вопросы будут сопровождаться примерами, в которых мы будем применять полученные знания. Я буду объяснять код этих примеров фрагмент за фрагментом. Советую выполнять их по мере чтения книги — так вы сможете сравнить свои результаты с тем, что получилось у меня.

Как показано на рис. 1, я выстроил главы в определенном порядке. В главах с 2-й по 5-ю, где обсуждается контекст Spring, вы найдете преимущественно теоретические примеры. Мало знакомому или вовсе не знакомому со Spring читателю необходимо начинать именно с них. Не беспокойтесь, я опишу основы самым простым из возможных способов. Затем наши примеры и обсуждения будут постепенно усложняться и начнут соответствовать реальному коду промышленного качества.

 

Рис. 1. Если вы ничего или почти ничего не знаете о Spring, то лучше всего при изучении данной книги начать с первой главы и дальше читать все подряд

Если вы уже хорошо знакомы с контекстом Spring и Spring AOP, можете пропустить часть I и сразу перейти к части II — «Реализация» (главы 7–15), как показано на рис. 2.

 

Рис. 2. Если вы уже знакомы с основами фреймворка Spring, умеете использовать контекст Spring и знаете аспекты проектирования, можете начать с части II, где мы применим возможности Spring для построения сценариев зеркального отображения приложений, с которыми вы столкнетесь в реальных системах

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

Следует помнить, что Spring — это целая вселенная. Так что, прочитав только одну книгу, вы не узнаете всего. Данное издание станет для вас лишь началом знакомства с этим фреймворком; благодаря ему вы освоите фундаментальные навыки использования важнейших компонентов Spring. На протяжении всей книги, там, где это уместно, я буду давать ссылки на другие ресурсы и книги, в которых рассматриваемые темы описываются более подробно. Настоятельно рекомендую вам ознакомиться с этими дополнительными ресурсами и книгами.

О коде

В этой книге представлено около 70 проектов, над которыми мы будем работать в главах 2–14. Разбирая конкретный пример, я буду указывать название проекта, в котором этот пример реализован. Советую писать код самостоятельно и использовать проекты в книге только для сравнения ваших решений с моими. Такой подход позволит вам глубже понять изучаемые концепции.

Примеры проектов, рассмотренных в книге, можно скачать по адресу https://manning-content.s3.amazonaws.com/download/a/32357a2-2420-4c0f-be67-645246ae0d94/code.zip.

Все рассмотренные проекты собирались с помощью Maven, чтобы упростить их импорт в любую IDE. Я писал проекты в IntelliJ IDEA, но вы можете запускать их из Eclipse, Netbeans или любой другой среды, на ваш выбор. Обзор рекомендованных инструментов представлен в приложении Е.

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

). Кроме того, если код описан в тексте, то из него часто удалялись комментарии. Многие листинги сопровождаются аннотациями, в которых подчеркиваются основные концепции.

Об авторе

 

Лауренциу Спилкэ — глава отдела разработки и тренер в компании Endava, где он руководит разработкой проектов для финансового рынка Европы, США и Азии. Его опыт работы насчитывает более десяти лет. По мнению Лауренциу, важно не только создавать высококачественное программное обеспечение, но также делиться знаниями и помогать другим повышать свою квалификацию. Руководствуясь этими соображениями, Лауренциу создал курсы по технологиям Java и сам преподает там, проводя презентации и мастер-классы. Его «Твиттер» — @laurspilca.

Иллюстрация на обложке

Рисунок на обложке книги называется «Женщина из Аяччо на Корсике». Это иллюстрация из коллекции «Костюмы народов мира» Жака Грассе де Сен-Совера (1757–1810), изданной во Франции в 1797 году. Каждая иллюстрация тщательно прорисована и раскрашена вручную. Богатство коллекции Грассе де Сен-Совера живо напоминает нам о том, как далеки были друг от друга культуры разных городов и регионов всего 200 лет назад. Изолированные, люди говорили на разных диалектах и языках. Встретив человека на городской улице или в сельской местности, мы бы легко поняли, откуда он родом, чем занимается и каков его достаток, всего лишь взглянув на его одежду.

С тех пор наша манера одеваться изменилась. Сегодня региональные различия, столь явные в прошлом, стерлись. Сейчас вы едва ли определите по одежде жителей разных континентов, не говоря уже о городах, регионах и странах. Похоже на то, что мы, поступившись культурным разнообразием, получили взамен более многоликую жизнь — разумеется, это касается в том числе и более многогранной и быстро меняющейся жизни технологий.

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

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.