Micronaut – это новый фреймворк Java/JVM с открытым исходным кодом для создания микросервисных приложений. Разработкой руководят создатели фреймворка Grails и поддерживается Объектными вычислениями . Проект активно работает над официальным выпуском версии 1.0.
В прошлом я использовал Grails для некоторых личных проектов и в настоящее время профессионально работаю в основном в экосистеме JVM. Поэтому, когда я увидел объявление о Micronaut, я решил попробовать и посмотреть, что это такое.
Цели Micronauts – обеспечить быстрое время запуска и небольшой объем памяти. И то, и другое важно для развертывания микросервисов.
приступая к работе
Чтобы приступить к созданию приложения, в руководстве пользователя рекомендуется установить интерфейс командной строки Micronaut. После завершения установки вы можете создать новый проект с помощью следующей команды.
mn create-app my-app-name
По умолчанию при этом создается сценарий Gradle для создания Java-приложения с использованием Micronaut. В качестве альтернативы вы можете указать maven в качестве сценария сборки, а в качестве языка программирования – Java, Groovy или Kotlin. Для своих примеров я решил использовать Groovy. Когда вы посмотрите на сгенерированную структуру проекта, она покажется вам очень знакомой, если вы раньше работали с Spring framework.
Чтобы запустить приложение, просто запустите:
./gradlew run
Вы также можете скомпилировать приложение и запустить основной метод в классе Application непосредственно с помощью вашей IDE.
Контроллеры
Как и в Spring Framework, контроллеры определяются декларативно с использованием аннотации @Controller . Классы, помеченные @Controller или другими аннотациями, обнаруживаются автоматически. В отличие от других фреймворков, таких как Spring, которые полагаются на сканирование путей к классам во время выполнения, это выполняется во время компиляции.
Простой контроллер выглядит следующим образом:
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
@Controller("/api/todo")
class TodoController {
@Get("/{id}")
Todo getTodo(int id) {
//Do something with the id from the URI
}
}
Аннотация @Get помещается в метод, который будет обрабатывать действие GET для объединенного URL-адреса в @Controller и @Получить аннотации. Дополнительные аннотации существуют для других методов HTTP (POST, PUT и т.д.). Переменные пути поддерживаются в URL-адресах и состоят из заполнителя ( {id} в данном случае) и параметра метода сопоставления. Объекты, возвращаемые методами контроллера, будут автоматически преобразованы в JSON.
Зернышки
Компоненты могут быть определены с помощью аннотаций к классу. Как и в случае с контроллерами, компоненты будут найдены и зарегистрированы с помощью сканирования путей к классам. Существует несколько различных аннотаций ( @Singleton , @Прототип и т.д.) для создания компонентов с различными областями применения. Так, например, я могу создать сервис, используя аннотацию Singleton.
import javax.inject.Singleton
@Singleton
class TodoService {
//Provide some implementation
}
Внедрение зависимостей
Внедрение зависимостей обеспечивается с помощью JSR-330 @Ввести аннотацию. В отличие от других фреймворков, Micronaut выполняет внедрение зависимостей во время компиляции. Это позволяет избежать использования отражения/прокси-серверов и способствует более быстрому запуску.
Аннотацию @Inject можно использовать для введения зависимостей с помощью инъекции конструктора, инъекции поля и параметров метода.
Расширяя предыдущий пример контроллера, мы можем внедрить сервис следующим образом:
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
import javax.inject.Inject
@Controller("/api/todo")
class TodoController {
TodoService todoService
@Inject
TodoController(TodoService todoService) {
this.todoService = todoService
}
@Get("/{id}")
Todo getTodo(int id) {
//Do something with the id from the URI
}
}
Вывод
Этот краткий обзор едва касается функциональности, уже доступной в Micronaut. Руководство пользователя является всеобъемлющим и содержит много полезной информации по всем функциям. Разработчики, пришедшие в Micronaut из SpringFramework, найдут его очень знакомым.
Учитывая, что фреймворк еще не вышел в официальную версию 1.0, он уже кажется очень мощным. Я с нетерпением жду возможности увидеть, как он продолжает развиваться и расти.
Обновлено 2018-07-30 : Благодаря Джим Ли за то, что указал на Твиттер это аннотации не обнаруживаются с помощью сканирования путей к классам, но вместо этого это происходит во время компиляции.
Оригинал: “https://dev.to/mkbaldwin/micronaut-a-five-minute-introduction-c27”