Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Что такое Micronaut

Micronaut — фреймворк для серверных приложений на Java: REST API, микросервисов, консольных утилит. Он принимает HTTP-запросы, превращает объекты в JSON и обратно, работает с базой данных, проверяет права доступа и вызывает другие сервисы. Главная особенность Micronaut — почти всю подготовительную работу он делает во время компиляции, а не при запуске, поэтому приложение стартует за секунду и расходует мало памяти.

Работа при компиляции

Фреймворку нужно знать, какие классы являются контроллерами, какие объекты кому передать, какие поля есть у записи для JSON. Spring узнаёт это при запуске: просматривает классы, читает аннотации через рефлексию (чтение устройства класса во время работы программы) и строит прокси. Micronaut делает то же самое заранее — через обработчики аннотаций (annotation processors). Это плагины компилятора javac: пока компилируется ваш код, они читают аннотации и генерируют дополнительные классы.

Например, для контроллера ArticleController после сборки в папке target/classes/com/example/ появятся файлы:

$ArticleController$Definition.class
$ArticleController$Definition$Exec.class
ArticleController.class

Класс $ArticleController$Definition — готовый «рецепт» создания контроллера: какой конструктор вызвать и что в него передать. При запуске Micronaut просто читает эти рецепты.

Что даёт подходПочему
Быстрый стартНе нужно сканировать классы и читать аннотации
Мало памятиНет кешей рефлексии и динамических прокси
Ошибки раньшеЧасть ошибок видна уже при компиляции
Нативная сборкаБез рефлексии GraalVM легко собирает приложение в исполняемый файл

Чем отличается от Spring Boot

Аннотации похожи, поэтому после Spring перейти легко:

ЗадачаSpring BootMicronaut
Контроллер@RestController@Controller
Маршрут GET@GetMapping@Get
Компонент@Service, @Component@Singleton
Настройки@ConfigurationProperties@ConfigurationProperties
РепозиторийSpring DataMicronaut Data
Когда собирается DIпри запускепри компиляции

Цена подхода — после изменения зависимостей в pom.xml иногда нужна полная пересборка, а обработчики аннотаций должны быть подключены в сборке. Об этом будет «Частая ошибка» в нескольких уроках.

Версия в курсе

Курс написан для Micronaut 5.2 и Java 25: Micronaut 5 требует JDK 25 как минимум. Сборка — Maven, тесты — JUnit. Проверьте Java:

java -version

Команда должна показать версию 25 или новее. Maven ставить отдельно не нужно: в проекте будет обёртка mvnw, она скачает Maven сама.

Что мы построим

Через весь курс мы делаем REST API блога:

  1. Статьи /articles: список, поиск, создание, изменение, удаление.
  2. Комментарии к статьям и база данных H2 через Micronaut Data JDBC.
  3. Проверку данных, обработку ошибок, настройки.
  4. HTTP-клиент, тесты, вход по паролю и JWT, задачи по расписанию, проверку здоровья.
  5. Сборку в jar и рассказ о нативной сборке GraalVM.

Запросы к API будем отправлять утилитой curl — она есть в Windows 10+, macOS и Linux.

Частая ошибка

Если запустить сборку на старой Java, Maven упадёт ещё до компиляции вашего кода. Вот что выводит JDK 16:

java.lang.UnsupportedClassVersionError: io/micronaut/maven/testresources/TestResourcesLifecycleExtension
has been compiled by a more recent version of the Java Runtime (class file version 69.0),
this version of the Java Runtime only recognizes class file versions up to 60.0

Версия файла 69 соответствует Java 25. Установите JDK 25 и проверьте, что переменная JAVA_HOME указывает именно на него.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.