Рефакторинг Web приложения - IShop
0.0 (0 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
19 students enrolled

Рефакторинг Web приложения - IShop

Программирование на Java
0.0 (0 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
19 students enrolled
Created by DevStudy .net
Last updated 11/2018
Russian
Current price: $9.99 Original price: $19.99 Discount: 50% off
30-Day Money-Back Guarantee
This course includes
  • 6.5 hours on-demand video
  • 10 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to Udemy's top 3,000+ courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Отделять бизнес логику от логики хранения данных;
  • Использовать возможности Java Reflection для объектно-реляционного отображения;

  • Создавать динамические репозитории с помощью механизма Proxy;

  • Декларативно управлять соединения и транзакциями. Познакомитесь с основами АОП;
  • Создавать отдельные сервисы и управлять зависимостями между ними;
  • Использовать принципы SOLID на практике.
Course content
Expand 10 lectures 06:25:47
+ Рефакторинг
10 lectures 06:25:47

Добавление нового функционала:

  1. При регистрации нового пользователя Ishop должен загрузить аватарку с  Facebook и в дальнейшем отображать ее в верхнем колонтитуле страницы

    1. Изменение моделей

    2. Получение ссылки на аватарку

    3. Изменение сервиса регистрации

    4. Отображение аватарки пользователя

  2. После успешного формирования заказа Ishop должен выслать email со ссылкой на заказ

    1. Email архитектура

    2. SMTP сервера

    3. Библиотека commons-email

    4. Параметры и код отправки email

Preview 32:51
  1. Определение Java Reflection

  2. Программирование без Reflection

  3. Доступ к полям класса

  4. Создание объекта класса по имени

  5. Создание объекта через конструктор

  6. Вызов метода по имени

  7. Анализ структуры класса

  8. Аннотации

  9. Использование аннотаций

  10. Объект динамического класса

  11. Создание прокси-объекта

Обзор возможностей Java Reflection
35:25
  1. Необходимость создания ResultSetHandler для каждого класса сущности

  2. Принцип объектно-реляционного отображения

  3. Получение коллекции всех полей класса

  4. Извлечение мета информации из JDBC ResultSet

  5. Аннотации отображения

  6. Конвертер классов

  7. Класс универсального обработчика результата SQL запроса (DefaultResultSetHandler)

  8. Классы обработчиков коллекций и единичных объектов

  9. Класс обработчика запроса количества записей в таблице

  10. Демонстрация работы обработчика

Универсальный обработчик результата SQL запроса
47:45
  1. Необходимость вручную управлять соединениями к базе данных при выполнении любого запроса

  2. Использование ThreadLocal переменных для передачи соединения между методами классов

  3. Правила обработки аннотации @Transactional

  4. Создание прокси фабрики

  5. Создание обработчика аннотации @Transactional

  6. Создание обертки вокруг методов бизнес сервиса с помощью динамических прокси классов

  7. Демонстрация работы проксирующих объектов

Декларативное управление соединениями и транзакциями в Java
34:05
  1. Проблема смешивания бизнес логики и логики доступа к источнику данных

  2. Шаблон Repository (DAO) как решение данной проблемы

  3. Использование репозиториев в проекте и демонстрация сквозной функциональности управления соединениями с помощью АОП подхода

  4. Преимущества и недостатки шаблона Repository (DAO)

  5. Пример подключения отдельного источника данных на примере XML файла для отображения категорий

  6. Демонстрация удобства изменения источника данных при использовании шаблона Repository (DAO)

Шаблон проектирования Repository (DAO)
30:05
  1. Проблема необходимости создания реализации репозитория для каждой сущности проекта

  2. Идея динамических репозиториев

  3. Аннотации, необходимые для реализации идеи

  4. Создание фабрики динамических репозиториев

  5. Обработчик SELECT запросов

  6. Обработчик INSERT запросов

  7. Использование в проекте динамических репозиториев

  8. Демонстрация работы динамических репозиториев

Динамические репозитории
43:29
  1. Определение внедрения зависимостей

  2. Проблема внедрения зависимостей через конструктор

  3. Идея контейнера и компонентов

  4. Функции контейнера по внедрению зависимостей

  5. Аннотации для конфигурации зависимостей

  6. Автоматическое создание объектов всех компонентов

  7. Автоматическое создание динамических репозиториев

  8. Автоматическое внедрение зависимостей по типу интерфейса

  9. Автоматическое внедрения свойств из properties файла

  10. Использование DependencyInjectionManager в проекте

  11. Демонстрация работы внедрения зависимостей

Preview 30:47
  1. Сервис по обработки аватарок с Facebook

  2. Сервис по сериализации/десериализации корзины покупок в cookie

  3. Сервис уведомлений

  4. Сервис асинхронной отправки email о созданном заказе

  5. Методы контейнера по внедрению зависимостей очищающие внешние ресурсы Java приложения

  6. Добавление кода отправки уведомления после успешного выполнения текущей транзакции

  7. Окончательные изменения кода по формированию заказа

  8. Демонстрация работы асинхронной отправки и выполнения кода после успешного выполнения текущей транзакции

Дополнительные сервисы
37:58
  1. Сравнение изменений сделанных в проекте "Web приложение - IShop"

    1. Универсальный обработчик результата SQL запроса

    2. Автоматическое формирование INSERT запросов

    3. Автоматическое управление соединениями и транзакциями

    4. Разделение логики на логику бизнес сервиса и логику работы с источником данных

    5. Внедрение зависимостей и свойств из properties файла

  2. Принципы SOLID на примере Web приложения IShop

    1. Принцип единственной ответственности

    2. Принцип открытости/закрытости

    3. Принцип подстановки Барбары Лисков

    4. Принцип разделения интерфейса

    5. Принцип инверсии зависимостей

  3. Демонстрация расширяемости и не расширяемости кода

  4. Жертва производительности в угоду быстрой разработки и легкой расширяемости

  5. Рекомендации по использованию фреймворков в проекте

Сравнение и финальный обзор изменений. Принципы SOLID
55:48
  1. Spring IoC вместо менеджера зависимостей

  2. Spring AOP Transactional вместо фабрики транзакционных сервисов

  3. JPA(Hibernate) вместо объектно реляционного отображения

  4. Spring Data вместо динамических репозиториев

  5. Конфигурационные бины Spring вместо ServiceManager

  6. Spring JavaMailSender вместо библиотеки common-email

Использование Spring, Spring Data, JPA в проекте
37:34
Requirements
  • Знание Java Standard Edition, Servlets, JSP
Description

Данный курс предназначен для изучение принципов и правил работы  популярных в Java мире фреймворков таких как Spring, Spring Data, JPA.  На примере работающего проекта в ходе 10 занятий будут рассмотрены  типовые проблемы с которыми сталкивается профессиональный Java разработчик при  создании проектов. Будут рассмотрены возможности Java Reflection и каким  образом используя данные возможности программист может создать универсальный код, который может быть повторно  использован в любом проекте. Таким образом данный курс направлен на  создание универсального алгоритма,  которым разработчик может пользоваться при создании других проектов.

В рамках курса будут рассмотрены принципы работы ORM фреймворков  (объектно-реляционного отображения), фреймворков по внедрению  зависимостей (IoC, Dependency Injection), декларативное управление  соединениями и транзакциями на базе АОП (аспектно ориентированного  подхода), а также шаблон проектирования Repository (DAO) на примере  создания фреймворка devstudy.

Обязательным условием успешного прохождения данного курса должно быть успешно пройденный курс Web приложение - IShop,  так как данный курс рассматривает проблемы, с которыми столкнется Java разработчик при изменении или  расширении web приложения IShop, а также при написании нового web  приложения.  Очень сложно понять преимущества какого-либо подхода к решению проблемы,  не поняв суть проблемы, поэтому рекомендуется сначала написать web  проект, а потом его рефакторить!

Создание простого фреймворка devstudy позволит упрощенно показать каким  же образом работают такие монстры как Spring, Spring Data, JPA,  Hibernate. После создания самописного фреймворка devstudy, который решает указанные  проблемы, на последнем занятии будут приведены общедоступные аналоги  фреймворков для решения тех же проблем: Spring, Spring Data, JPA,  которые затем будут добавлены в проект вместо фреймворка devstudy, чтобы  продемонстрировать пример их использования на текущем проекте.

Who this course is for:
  • Данный курс предназначен для изучение принципов и правил работы популярных в Java мире фреймворков таких как Spring, Spring Data, JPA.