Онлайн библиотека на Spring (v. 2.0)

Новая версия видеокурса по созданию веб проекта на Java с применением технологий Spring Framework, Hibernate, Gradle

С подробными комментариями по всему коду

Исходные коды обновлены: апрель 2019 г.

 

 

Технологии проекта

 

Основные цели курса

научить вас по шагам создавать крупный веб проект на основе Spring

 

проводить интеграцию Spring с другими технологиями (Hibernate, JSF, Gradle)

использовать Spring Boot в веб приложении для быстрой настройки и сборки проекта

применять Hibernate вместе с Spring Data для ускорения разработки слоя доступа к данным

разделять веб приложение на слои (backend и frontend)

создавать API для backend, чтобы им мог пользоваться любой клиентский фреймворк

добавлять безопасность в Spring приложение (авторизация, SSL)

 


Упор на практику

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

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

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

Судя по отзывам учеников - такой подход дает максимальные результаты.

 

80% практика

20% теория


Что такое Spring Framework

Spring Framework - библиотека или набор инструментов для упрощения разработки любых Java программ.

На данный момент - это один из самых продвинутых фреймворков в мире и популярность его растет каждый день.

Тысячи Java программистов по всему миру внедряют в своих проектах Spring Framework.

Недаром почти на всех вакансиях с более-менее хорошей зарплатой - требуется знание этого фреймворка.

Для изучения основ Spring у нас доступны около 5 курсов. Там вы сможете получить необходимый фундамент. Ссылка на курсы Spring >>

 

Нужен ли вам Spring?

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

Тогда вам будет легче устроиться на работу Java разработчиком, скорость разработки проектов возрастет (как и их сложность).

Но полностью без основ Java за Spring нет смысла браться, сначала нужно пройти самые основы языка (ООП, синтаксис и пр.). Ниже на странице будет подробное описание минимальных требований, чтобы пройти этот курс.

Почему веб проекты Java лучше создавать на Spring?

 

В первую очередь Spring освобождает разработчика от рутинного кода, тем самым ускоряя создание любого веб приложения на Java.

Например, с помощью Spring Data вы можете легко создать слой работы с БД и не отвлекаться на использование JDBC API. Ваш код будет "чистым" и понятным.

Вообще изначально одна из целей этого фреймворка - это упрощение создания кода Java.

Новичкам и тем, кто привык к стандартному Java, может показаться, что это не так. Но на самом деле, когда у вас будет достаточный опыт в Spring вы поймете - скорость разработки увеличивается во много раз.

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


Какой проект вы создадите

 

Видеодемонстрация

 

 

 

 

Основной функционал библиотеки

 

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

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

авторизация пользователя

разделение по ролям

редактирование/добавление книг

постраничный вывод данных

создание защищенных разделов

редактирование справочников

проверка логина и пароля

применение Ajax

переключение языков (русский и английский)

поиск и просмотр книг

 

 

Дизайн приложения

Для проекта был применен дизайн в виде книжной полки и списка карточек, которые пришли из Google Material Design.

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

Вы проведете верстку готового дизайна в компоненты JSF, чтобы все выглядело как на скриншоте.

В отличии от первой версии библиотеки - этот дизайн был взят из интернета и немного доработан специально для проекта.

Вы будете использовать элементарные знания по HTML и CSS, чтобы понять как была проведена верстка.

 

 

Инструменты

Даже если вы новичок - вам все равно сразу нужно приучаться работать с правильными инструментами, чтобы ускорить разработки приложений.

Для работы с курсом вы будете использовать среду разработки IntelliJ IDEA Ultimate Edition, сборщик проекта Gradle, Hibernate, Java Server Faces и сам Spring Framework.

 

Spring Framework

За основу вы возьмете фреймворк Spring, на нем будет создан весь backend. Вы поймете, насколько это удобней и быстрее, чем без использования Spring. Также включат все настройки безопасности, аутентификация и пр.

Java Server Faces

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

 

IntelliJ IDEA

Вся разработка будет вестись в этой IDE, которая является в данный момент самой популярной средой для новичков и профессионалов Java. Вы будете использовать версию Ultimate (можно триальную).

 

Gradle

Универсальный сборщик, который позволит вам подключать все нужные зависимости Hibernate, настраивать проект и многое другое. Если вы не работали с ним ранее - вы научитесь основным действиям.

 

 

MySQL (Workbench)

Все таблицы будут находиться в этой СУБД, структура (дамп) будет предоставлена вам в готовом виде. Визуальный редактор - MySQL Workbench

 

Hibernate

Все запросы к БД и доступ к данным - через Hibernate. Spring позволяет легко настроить работу с ним и автоматически создает нужные запросы.

 

 

Lombok

Инструмент-утилита для сокрашения "лишнего" кода. Повышается читаемость и удобство создания. Используется внутри многих фреймворков в том числе Spring.

 

Bootstrap

Популярный фреймворк для работы с веб страницами. Будете использовать некоторые его возможности по разметке страниц.

 

В чем основное отличие этого курса?

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

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

Кроме этого, применяется уникальный дизайн для веб приложения, который вы сверстаете на клиентском уровне и соедините с backend'ом.

Чем отличается этот курс от старого?

 

В первой версии онлайн библиотеки вы работали со стандартными средствами JavaEE по разработке веб приложений.

В новом проекте вы будете работать в основном с технологиями Spring.

Вы увидите, какое это дает преимущество в скорости и удобстве разработки. Поэтому большинство крупных проектов используют Spring.

Также были убраны "лишние" темы, которые отвлекали от основной части курса (например, отправка почты).

Новый курс - это проект, созданный с нуля. Со старым его объединяет только название и тема.

 

* Если вы ранее никогда не работали с веб приложениями Java - вам сначала нужно пройти старый курс. Подробнее о минимальных знаниях перед прохождением - ниже на странице.

 

 

Также был полностью обновлен дизайн:

 

Старый дизайн

Новый дизайн

 

 

Минимальные знания

 

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

 

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

Опыт в СУБД - создание и связывание таблиц, внешний и первичный ключи, элементарные действия - чтобы для вас не было сюрпризом, как создаются простые таблицы в СУБД. Вам будет дана готовая структура, чтобы не создавать все вручную с нуля.

JDBC - SQL - знать желательно, чтобы понимать что происходит при использовании Hibernate. Хотя вы будете создавать запросы в Hibernate и без знаний JDBC-SQL (с помощью Spring Data). Это относится к основам любого Java приложения.

Основы Spring Framework - мы не будем проходить с нуля все основы Spring, т.к. общее понимание что это такое у вас уже должно быть. У вас должен быть хотя бы небольшой опыт работы со Spring, внедрение зависимости, настройка и пр. Остальные моменты подробно будут показаны на практике.

Основы Java Server Faces - клиентскую часть будете делать на JSF, поэтому по нему тоже должен быть какой-то опыт. Хотя сама по себе эта технология не сильно сложная, многие даже разбираются по ходу изучения курса. Но лишний опыт не помешает.

Слои (уровни) приложения

 

Вы будете создавать приложения по слоям: сначала backend, потом frontend.

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

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

 

Если разделить слои более подробно, то получится примерно следующее:

 

 

 

Что такое backend и frontend

 

Любое веб приложения можно разделить условно на 2 части: сервер и клиент.

Сервер - это backend, клиент - frontend.

Основная ваша задача - создавать backend и frontend независимо друг от друга, чтобы в любое время можно было заменять их, если будет необходимо.

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

 

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

Посмотрите видеоурок, где подробно рассказано о backend и frontend:

 

 

Чему вы научитесь

 

Основные действия, которые вы выполните для Spring проекта:

1. Создание проекта и подключение зависимостей

2. Добавление параметров Spring Boot и Hibernate

3. Интерфейсы и основные функции проекта

4. Создание backend с API-функционалом на Spring

5. Создание frontend и связывание с backend через API

6. Добавление параметров Spring Security

Эти шаги выполняются практически в любом Spring приложении - вы пройдете их последовательно с самого начала.

Также в дополнение - вы узнаете некоторые более продвинутые "фишки", которые профессионалы применяют в крупных проектах.

Дополнительные утилиты

Помимо основных инструментов (Spring, Hibernate, Gradle) вы будете использовать дополнительные.

Lombok - позволит вам создавать более красивый и читаемый код с помощью одних аннотаций. Его очень полезно применять как в обычном классе, так и в Entity классах Hibernate. Вы увидите насколько ваш кода станет более удобным. Его используют многие крупные фреймворки.

Spring Actuator - полезная Spring утилита, которую будем использовать во время разработки проекта. Она нужна для мониторинга различных параметров работы приложения после запуска (созданные бины, endpoints для сервисов и многое другое).

 

Основные темы

  • Проект Spring Boot Проекты на Spring Boot требуют меньше времени для сборки и настройки.
  • Создание backendСерверная часть, которая будет выполнять основной функционал
  • Добавление API для backend Любая клиентская часть будет иметь возможность соединиться с backend
  • Использования Spring Data Отличие от стандартного подхода и ускорение разработки в несколько раз
  • Создание слоя доступа к БДБыстрая и удобная разработка слоя доступа к данным БД
  • Использование GradleПрименение Gradle вместе с Spring для сборки проекта и подключения библиотек
  • Настройки Hibernate Основные настройки Spring Boot для правильной работы Hibernate
  • Создания запросов к БД Определение нужных запросов в БД на основании API backend
  • Создание frontend Добавление клиентской части для взаимодействия с пользователем
  • Связь frontend и backend Сборка проекта по типу "конструктор" для полной работы приложения
  • Отладка приложенияПошаговое выполнение с мониторингом основных параметров кода
  • Настройка логирования Вывод всей необходимой информации и обработка ошибок при выполнении
  • Использование JSF Фреймворк для создания динамичных веб страниц в Spring проекте
  • Верстка дизайна Перенос уникального дизайна в JSF приложение и компоненты
  • Постраничный вывод данных Правильный постраничный вывод данных, чтобы не загружать БД
  • Сборка веб страницИспользование шаблонизатора для сборки страниц по частям.
  • Шаблонизатор Facelets Применение технологии Facelets для исключения повторного кода
  • Аннотации настроек Spring Настройка бинов м параметров Spring с помощью аннотаций
  • Работа с книгамиОсновной функционал онлайн библиотеки для админа и пользователя
  • Редактирование справочников Дополнительный функционал для работы со справочниками
  • Использование Lombok Упрощение и разгрузка кода для более удобного чтения и создания
  • Аутентификация/Авторизация Защита страниц от неавторизованного доступа с помощью формы
  • Настройки безопасности Использование Spring Security для контроля доступа к страницам
  • Использование Primefaces Готовые динамичные компоненты для веб страниц JSF c Ajax
  • Использование Bootstrap Разделение веб страниц с помощью технологии Bootstrap
  • Библиотеки Bootsfaces, Omnifaces Вспомогательные библиотеки для упрощения работы с JSF
  • Использование Spring Actuator Утилита мониторинга Spring приложения во время его работы
  • Добавление RESTful сервисов Генерация сервисов для использования любым клиентским приложением
  • Уникальный дизайн Поиск уникального дизайна и перенос в Spring приложения на JSF
  • Верстка компонентов Использование JSF компонентов для правильной верстки
  • Работа с куками Сохранение информации пользователя в куках браузера
  • Работа с локалямиЛокализация приложения на несколько языков с переключением
  • Spring Boot + AOPНастройка Spring Boot приложения для использования AOP
  • Использование AOPВывод сообщений для пользователей с помощью Spring AOP
  • Настройка IntelliJ IDEAЧтобы сразу удобно работать с IDEA - нужно правильно ее настроить
  • Работа с GlassFish (Payara)Настройка и установка GlassFish в IDEA, загрузка приложения

Дополнительные материалы

 

Помимо основных базовых тем, вы также пройдете некоторые продвинутые методики.

А именно: добавление RESTful сервисов к проекту, работа с SSL.

Чтобы проект был полностью безопасным - вам нужно будет создать и настроить собственные SSL сертификаты, которые будет "понимать" браузер.

Это нужно для того, чтобы при отправке данных пользователя (логин-пароль), злоумышленник не смог перехватить его данные.

 

RESTful сервисы

SSL шифрование


 

 

Скриншоты некоторых уроков

 

 

 

 

Меню (демо-версия) курса

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

(посмотреть интерактивную ДЕМО версию курса)

 

 

 

Бонусные уроки

RESTful сервисы

{ REST }

С помощью Spring можно легко организовать веб сервисы для проекта "Онлайн библиотека", передавать как текстовые, так и двоичные данные.

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

Вы пошагово добавите нужные RESTful сервисы к проекту и протестируете их.

С помощью этих сервисов любое внешнее приложение сможет обращаться к вашему функционалу библиотеки в формате JSON, получать результат и отображать по своему усмотрению.

 
 

SSL и HTTPS

{ SSL }

Еще один бонусный блок, с помощью которого вы сможете добавить шифрование к проекту онлайн библиотеки.

SSL используется в любом профессиональном проекте, где пользователь вводит личные данные (покупка билетов, заказ товаров и пр.)

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

Вы создадите самоподписанный SSL сертификат, ключи, JKS и все необходимое. Также настроите Spring Security для работы с ним.

В конце протестируете безопасность и SSL в различных браузерах (Google Chrome, Firefox, Safari, IE). Все бразузеры должны "принимать" сертификат и шифровать данные.

 
 

 

 

Вопросы читателей

Сколько времени займет изучение курса?

Примерно 2 недели. При условии, что вы не полный новичок и уже работали со Spring раньше.

Можно управиться и за неделю, если заниматься каждый день по 2-3 часа.

Чем новый курс отличается от старого?

Подробно разница расписана на странице. Если коротко - это полностью новый курс, написанный с нуля с упором на Spring, а не на стандартный JavaEE.

Где можно будет задавать вопросы по урокам?

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

В курсе уже есть исходные коды или их придется набирать вручную?

Все исходные коды есть, по каждому уроку можно будет открывать в IntelliJ IDEA. Но я рекомендую все равно набирать весь код вручную, чтобы лучше запомнить его.

Можно будет показывать проект на собеседованиях?

Да, многие клиенты так делают. Самое главное, чтобы вы сами создали этот проект пошагово и смогли объяснить как и что работает.

Можно сначала купить "Минимум", а потом доплатить до другого комплекта?

Можно, но это будет стоить дороже, чем текущая разница между пакетами, т.к. акция со скидкой уже не будет действовать.

Можно ли купить курс и начать его изучение позже?

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

Почему используется JSF, а не другая UI технология?

JSF показан для примера, как можно создать frontend и соединить его с backend. Если у вас будет готовое API - вы можете использовать любой клиентский фреймворк.

Какие есть способы оплаты? (Из Украины, Европы и пр.)

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

Почему не используется Spring Webflow?

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

Нужно ли сначала проходить первую версию курса?

Если вы - новичок в веб разработке на Java - то нужно, чтобы получить фундамент JavaEE. В новом курсе нет основ, вы сразу будете использовать Spring как основной фреймворк и у вас должен быть опыт в веб разработке. Более подробно о минимальных знаниях перед прохождением - смотрите на странице.

Если я не знаю Hibernate, смогу ли пройти этот курс?

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

 

 

Примеры уроков из курса

 

 

Создание проекта Spring Boot

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

 

 

Интерфейс DAO

Специальный паттерн проектирования для разделение функционала на нужные интерфейсы - требуется при реализации бэкенда.