Описание
Spring – это легковесный каркас с открытыми исходными текстами. Это популярный opensource-проект, охватывающий аспекты как JavaEE-, так и JavaSE-разработок. Spring Framework наиболее известен как источник расширений (features), необходимых для эффективной разработки сложных бизнес-приложений вне тяжеловесных программных моделей. Spring Framework может быть рассмотрен как коллекция меньших фреймворков или фреймворков во фреймворке, большинство из которых может работать независимо друг от друга. Однако они обеспечивают большую функциональность при совместном использовании. Абстрактные классы, фабрики и бины разработаны таким образом, чтобы программисту оставалось написать только бизнес-логику.
В рамках курса вы получите представление о Spring Framework, узнаете об основных модулях этого фреймворка и вариантах их использования.Также вы рассмотрите использование Spring Framework совместно с другими технологиями.
удостоверение о повышении квалификации государственного образца
Цели
- Познакомиться с возможностями Spring Framework, практическим применением его для решения типичных задач, возникающих в ходе разработки.
- Получить обзорную информацию, не входящую в Spring Framework, по спектру продуктов, выпускаемых под брендом Spring.
Целевая аудитория
Предварительная подготовка
Опыт работы с Java SE и Maven.
Желательны знания JDBC и шаблонов проектирования (Proxy, Command, Decorator, Template Method, MVC).
Разбираемые темы
-
Часть I. SPRING IOC (теория 7 ч, практика 2 ч, домашняя работа около 2 ч)
- Обзор фреймворка Spring
- История
- Концепция IoC
- Интерфейс ApplicationContext
- Бины в Spring
- Spring configuration
- Конфигурация в XML
- Конфигурация через аннотации
- Конфигурация в коде (Java based)
- Scope бинов
- Жизненный цикл бина
- События (Events)
- Создание Event-а
- Подписка на Event при помощи @EventListener
- Фильтр Event-ов
- Примеры использования
- Локализация
- Конфигурация профилей
- Spring Expression Language
-
Часть II. SPRING BOOT (теория 1 ч, практика 1 ч)
- Что такое Spring Boot
- Основной стартер в POM (spring-boot-starter-parent)
- Автоконфигурация
- @SpringBootApplication
- @ComponentScan
- @Configuration
- @EnableAutoConfiguration
- Конфигурация
- Command Line Properties
- Application Property Files
- Profile-specific Properties
- Плейсхолдеры в Properties
- YAML вместо Properties
- Type-safe Configuration Properties
- Использование @ConfigurationProperties
- Third-party Configuration
- Валидация @ConfigurationProperties
- @ConfigurationProperties и @Value
- Profiles
-
Часть III. SPRING AOP (теория 2 ч, практика 1 ч, домашняя работа около 2 ч)
- Примеры использования AOP
- Типы Аdvicе-ов
- Язык Pointcut-ов
- Объединение Aspects-ов
-
Часть IV. SPRING DATA (теория 8 ч, практика 3 ч, домашняя работа около 2 ч)
- CrudRepository
- JpaRepository
- @EnableJpaRepositories
- @EnableTransactionManagement
- @Transactional
- Timeout
- Флаг Readonly
- Объявление Query-методов
- Стратегии создания SQL запроса
- Cоздание SQL запроса
- Property Expressions
- Обработка специальных параметров
- Ограничение результатов SQL запроса
- Возвращиене Collections или Iterables
- Обработка Null в метдах репозитория
- Streaming результатов SQL запроса
- Асинхронная обработок SQL запроса
- Использование @Query
- Native SQL запроса
- Сортировка
- Использование именованных параметров
- Использование SpEL
- SQL запросы на изменение данных
- Проекции
- Хранимые процедуры
- SQL запрос по примеру
- @Transactional
- Блокировки
-
Часть V. SPRING REST (теория 2 ч, практика 2 ч, домашняя работа около 1 ч)
- REST-сервисы
- Request и Response
- Request-параметры
- Path-параметры
- HTTP-хидеры
- Spring HATEOAS
- Документация REST-сервисов при помощи Swagger
-
Всего: теория – 21 ч. (70%), практика – 9 ч. (30%), домашнее задание – 7 ч. (+23%)
Ведущий разработчик с опытом работы более 8 с Java.
О проектах
В рамках своего 10-летнего опыта работы:- ускорил выполнение операций, в частности SQL-запросы;
- разработал несколько крупных бизнес-задач;
- отрефакторил и покрыл тестами несколько модулей;
- сделал профилирование на кластере Kubernetes;
- разработал "с нуля" пару микросервисов на Kotlin;
- занимался разработкой ПО.