Рубрики
Без рубрики

Микронавт: Пятиминутное введение.

Micronaut – это новая платформа Java /JVM с открытым исходным кодом для создания микросервисных приложений. Развитие… Помечен как java, groovy, kotlin, micronaut.

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”