Язык программирования Java. Создание приложений для работы с базами данных - технологии ORM (Hibernate, TopLink)
JV_Advanced
Цель курса дать слушателям знания по разработке корпоративных Java EE приложений на основе каркаса Spring/Spring boot.
Аудитория
Курс предназначен для специалистов в области корпоративных приложений на Java
Результат обучения
- Знакомство с архитектурой корпоративных приложений на Spring, Spring IOC, Spring AOP, Spring Data JPA (ORM), Spring REST/JSON/HATEOAS API.
- Знакомство с моделью MVC в парадигме Single Page Application (SPA) + REST/JSON API.
- Знакомство с реализацией Websockets в Servlet-контейнере.
- Изучение систем сборок проектов maven/gradle, упаковка микросервисов в кконтейнеры Docker.
- Знакомство с защитой данных, аутентификацией и авторизацией
Предварительный уровень подготовки
Обязательное знание диалекта 1.8 языка Java на уровне JavaSE8Core. Желательно понимание обобщённых типов Java и фреймворка коллекций Java.
Программа курса
Модуль 1. Основы Spring Framework (3 ак. часа)
- Введение в Spring Framework;
- Архитектура каркаса;
- Компонентная модель Spring.
Модуль 2. Spring DI & IOC (5 ак. часов)
- Что это?
- Различие между DI и IOC
- Концепция Бина
- Бины как разделяемые сервисы
- Время жизни и жизненный цикл бина
- Аннотации Spring
- @Bean
- @Service
- @Component
- @Configuration
- @PostConstruct
- etc.
- Базовое знакомство с Spring XML и аннотациями (4 ак. часа)
- Способы создания бинов:
- Через метод
- Через конструктор
- Декларативно
- Императивно
- Автосвязывание
- Управление порядком загрузки бинов
- BeanPostprocessor's
Модуль 3. Spring Data (4 ак. Часа)
- Абстракции доступа к данным в Spring
- Spring Data
- Spring Data Adapters (JPA, Mongodb, Net4j, etc.)
- Spring JDBC Template
- Connection pools (Hikari, etc.)
- JDBC & native nosql database connectors
Модуль 4. JPA (4 ак. часа)
- Entity Manager Fabric
- Entity Manager
- Entity (Единица персистентности, PU)
- Аннотации JPA
- Структура базы данных, объекты и их отношения
- Lazy loading
- Транзакции и блокировки
- JPQL (JPA Query Language)
- @Query и @NativeQuery
- Проблемы возвращения результатов в жёстко типизированной Java
- Criteria API
- Различие EM и Spring Repository
- Устранение проблем Spring Repository
- Отображение поисковых запросов JPA на методы поиска в интерфейсе репозитория Spring Data
Модуль 5. MongoDB (2 ак. часа)
- Структура запросов
- Отображение поисковых запросов MongoDB на методы поиска в интерфейсе репозитория Spring Data
Модуль 6. Философия Spring Boot (2 ак. часа)
- Соглашения над конфигурацией: Spring Boot Starters
- Embedded servlet containers: tomcat/jetty/undertow
- Конфигурация и конфигурации по умолчанию
- Java конфигурации
- Создание классов конфигурации компонентов Spring
- Предыинициализация классов конфигурации из файлов *.properties и .yml
- Чтение конфигурации из environment
- Использование распределённой конфигурации из Spring Cloud Config
- Классическая конфигурация на XML
- Конфигурация на Groovy DSL
Модуль 7. Сборка и отладка проектов (6 ак. часов)
- Консольные средства сборки
- Ant
- Maven
- Gradle
- Интеграция описания проекта на Maven/Gradle с IDE (Intellij/Eclipse/Netbeans)
- Средства контроля версий, DVCS. Git
- Поддержка Spring/spring boot в Intellij Idea и STS(Eclipse)
Модуль 8. Способы реализации REST(Json, XML) API в Spring/Spring boot (3 ак. Часа)
- Spring Data REST/HATEOAS
- Spring MVC: @Controller, @RestController
- Jhipster DAO/DTO/Swagger
- Скаффолдинг доменной модели в Spring Data REST и Jhipster (автоматическая генерация сущностей, репозитариев и клиентского API для Angupar/AngularJS, React)
- Самодокументированные API: HATEOAS(Spring Data REST) и Swagger(Jhipster и "чистый" Spring)
- Способы построения API, альтернативные REST
- Facebook GraphQL
- Microsoft Odata
- Старые злые Web Services (WS)
- Проблемы аутентификации/авторизации на молодёжных GraphQL и Odata. Spring Security не помогает.
Модуль 9. Использование API из клиентов (3 ак. часа)
- Java/Groovy
- JavaFX
- Vaadin
- Android
- JS (browser/nodejs)
- Аспекты потребления API из React/Redux и Angular 5
Модуль 10. Микросервисы. Netflix stack, Spring Cloud и микро-сервисная архитектура Jhipster (2 ак. часа)
- Если есть возможность обойтись без микро-сервисов, не открывайте этот ящик Пандоры!
- Spring Cloud Config
- Zookeeper (Distributed ierarchical key-value storage с избыточностью). Windows Registry на стероидах.
- Netflix Eureka (Service Discovery)
- Netflix Zool (Service Gateway) и Jhipster Gateway
- Netflix Hystrix (Circuit Breaker)
- Netflix Ribbon (Client Side Load Balancer) и Jhipster Gateway
- Обзор средств запуска и контроля за микро-сервисами
- Docker/Docker swarm
- Mesos/DCOS
- Kubernetes
- Hadoop/YARN
Модуль 11. Security (2 ак. часа)
- Современные протоколы авторизации и аутентификации
- Stateless-аутетнтификация в REST-сервисах
- Basic
- Oauth2
- JWT
- Spring Sequrity
- Общие концепции и конфигурация библиотеки
- Связывание security-объектов с базой данных
- Хранение токенов
- Method-based vs URL-based security
- Сервер UAA (User Accounts & Autentification) из Jhipster
- Сервер UAA на чистом Spring Boot