Оглавление
Quarkus
Быстрый фреймворк для облака и микросервисов: REST, Panache, режим разработки и нативная сборка.
1.Начало работы
- Что такое QuarkusЗачем нужен Quarkus, чем он отличается от других Java-фреймворков и что мы построим в этом курсе.
- Создание проектаКак сгенерировать проект Quarkus через Maven-плагин и что лежит в его папках.
- Режим разработки и Dev UIЗапуск приложения командой quarkus:dev, живая перезагрузка кода и панель разработчика Dev UI.
2.REST API
- REST-эндпоинтыКласс-ресурс, аннотации @Path и @GET, HTTP-методы и тип ответа в Quarkus REST.
- Параметры пути и запросаКак получить id из адреса через @PathParam и параметры после знака вопроса через @QueryParam.
- JSON, записи и тело запросаКак вернуть объекты в виде JSON, принять JSON в теле POST-запроса и ответить статусом 201 Created.
- CDI: бины, области видимости и внедрениеКак вынести логику из ресурса в сервис-бин и получить его через @Inject.
- Настройки и профилиФайл application.properties, чтение значений через @ConfigProperty, профили dev, test, prod и переменные окружения.
- Группа настроек: @ConfigMappingКак собрать настройки с общим префиксом в один интерфейс и получить проверку опечаток при старте.
- Проверка входных данныхАннотации Jakarta Validation на записях, @Valid в ресурсе и ответ 400 со списком ошибок.
- Обработка ошибокСвои исключения и обработчики @ServerExceptionMapper, которые превращают ошибку в понятный JSON-ответ.
3.База данных
- Подключение базы и Dev ServicesРасширения для Hibernate ORM и драйвера H2, автоматическая база Dev Services в режиме разработки и настройка базы для сервера.
- Сущности Panache: активная записьКласс Post как таблица базы данных через PanacheEntity: чтение, сохранение и удаление без SQL.
- Запросы: поиск, сортировка, страницыУпрощённые запросы Panache, сортировка Sort, постраничный вывод Page и подсчёт записей.
- Репозиторий Panache и комментарииВторой стиль Panache: обычная сущность Comment и бин CommentRepository с методами доступа к данным.
- ТранзакцииАннотация @Transactional, откат изменений при исключении и программные транзакции QuarkusTransaction.
4.Возможности сервиса
- REST-клиент: запросы к другим сервисамКак вызвать чужой HTTP API через интерфейс с @RegisterRestClient, настроить адрес и обработать ошибки удалённого сервиса.
- Тесты: @QuarkusTest и RestAssuredКак запустить приложение в тесте, вызвать эндпоинты через RestAssured, подменить REST-клиент моком и запускать тесты непрерывно.
- Проверки здоровья и метрикиЭндпоинты /q/health для оркестратора, своя проверка готовности и метрики Micrometer в формате Prometheus.
- Основы безопасностиПользователи и роли в файле настроек, Basic-аутентификация, аннотации @RolesAllowed и @Authenticated, ответы 401 и 403.
- Задачи по расписаниюАннотация @Scheduled: запуск метода каждые N секунд или по cron-выражению, транзакции в задачах и формат cron в Quarkus.
5.Сборка и запуск
- Сборка и запуск jarКоманда package, структура папки quarkus-app, запуск в профиле prod, настройки через окружение и uber-jar.
- Нативная сборкаЧто такое нативный исполняемый файл, чем он отличается от jar, как собрать его через GraalVM или в контейнере и какие у него ограничения.
- КонтейнерыГотовые Dockerfile из генератора, сборка и запуск образа, настройки через переменные окружения и расширения для сборки образов.