Знакомство со встроенными функциональными интерфейсами Java. Возможности Java 8. Лямбда-выражения. Области действия, замыкания. Предикаты. Функции. Компараторы.
Имплементировать интерфейс Predicate, определяющий, является ли данная строка PIN-кодом (содержит ровно 4 цифры или 6 цифр).
Работа со Stream API в Java 8.
реализовать: 1) класс Human (int age, String firstName, String lastName, LocalDate birthDate, int weight); 2) приложение, которое создает список из объектов класса Human, а затем производит фильтрацию по признаку «вес больше, чем возраст», сортировку по фамилии в обратном порядке, сумму всех весов.
Знакомство с конкурентным программированием в Java. Потокобезопасность, ключевое слово syncrhonized, мьютексы, семафоры, мониторы, барьеры.
Создать свои потокобезопасные имплементации интерфейсов: List с использованием Lock, Map с использованием Semaphore.
Работа с ExecutorService, CompletableFuture.
Реализовать собственную имплементацию ExecutorService с единственным параметром конструктора – количеством потоков.
Познакомиться с паттернами проектирования, их определением и классификацией. Обзор паттернов GoF. Паттерн Синглтон.
Реализовать паттерн Singleton как минимум 3-мя способами.
Знакомство с реализацией порождающих паттернов проектирования.
Написать реализацию паттернов «Фабричный метод», «Абстрактная фабрика», «Строитель», «Прототип».
Реализация структурных паттернов проектирования.
Написать реализацию паттернов Декоратор, Легковес.
Реализация структурных паттернов проектирования.
Написать реализацию паттернов Шаблонный метод, Посетитель.
Знакомство с системой сборки приложения. Gradle.
Создать приложение, которое выводит какое-то сообщение в консоль. Создать Gradle Task, который создает jar-файл приложения, переносит его в отдельную папку, в которой хранится Dockerfile для jar, а затем создает Docker контейнер из данного jar-файла и запускает его.
Введение в Spring. Container. Bean. Внедрение зависимостей, основанных на конструкторах и сеттерах. Конфигурация бинов. Автоматическое обнаружение и связывание классов.
Создать приложение, в котором создается ApplicationContext и из него берётся бин с названием, переданным в качестве аргумента к приложению, и вызывается метод интерфейса, который он имплементирует. Нужно создать по одному бину для каждого класса, определить им название. Проверить, что вызывается при вводе названия каждого из бинов. Классы и интерфейс: Интерфейс Musician с методом doCoding(), его имплементации: Drummer, guitarist, trombonist.
Разобраться с использованием Spring boot.
Создать приложение с использованием Spring Boot Starter Initializr (https://start.spring.io/) с такими зависимостями:
– Spring Web;
– Lombok;
– Validation;
– Spring boot Actuator.
Запустить приложение и удостовериться, что не появилось никаких ошибок. Добавить все эндпоинты в Actuator, сделать HTTP-запрос на проверку состояния приложения. Собрать jar-файл приложения, запустить и проверить состояние при помощи REST-запроса.
Работа с жизненным циклом компонентов. Аннотации PostConstruct, PreDestroy..
Создать приложение, которое при запуске берет данные из одного файла, хеширует, а при остановке приложения удаляет исходный файл, оставляя только файл с захешированными данными. Названия первого и второго файла передаются в качестве аргументов при запуске. При отсутствии первого файла создает второй файл и записывает в него строку null. Реализовать с использованием аннотаций PostConstruct, PreDestroy.
Конфигурирование приложения. Environment.
Создать файл application.yml в папке resources, добавить в него такие свойства:
– student.name – имя студента;
– student.last_name – фамилия студента;
– student.group – название группы студента.
При запуске приложения выведите данные свойства в консоль при помощи интерфейса Environment или аннотации Value.
Знакомство со Spring MVC. Работа с Rest API в Spring.
Создать отдельный репозиторий Git. Создать простой html-документ, который будет содержать вашу фамилию, имя, номер группы, номер варианта. Создать контроллер, который будет возвращать данный статический документ при переходе на url «/home». Создать класс Phone с полями name, creationYear. Создать класс Manufacture с полями name, address. Создать классы-контроллеры для создания, удаления объектов и получения всех объектов каждого типа. Сами объекты хранить в памяти.
Использование Hibernate в Spring framework.
Изменить программу с предыдущего задания так, чтобы объекты хранились в базе данных PostgreSQL вместо памяти компьютера.