SpringBoot的竞争对手——Micronaut入门教程

1.Micronaut是什么?

Micronaut是一个现代化的基于JVM的全栈的微服务框架,旨在构建模块化易于测试的微服务应用程序。

Micronaut是由Grails框架的创建者开发的,并从多年来的使用SpringSpringBootGrails经验教训中吸取了灵感。构建出了一套从Monolith微服务的现代化的应用程序。

Micronaut旨在提供构建功能齐全的微服务应用程序所需的所有工具,包括:

  • 依赖注入和控制反转(IoC)

  • 合理的默认值和自动配置

  • 配置和配置共享

  • 服务发现

  • HTTP路由

  • 具有客户端负载均衡的http客户端

同时,Micronaut旨在通过提供以下功能来避免SpringSpringBootGrails等框架的缺点:

  • 提高启动时间

  • 减少内存占用

  • 最少使用反射

  • 最少使用代理

  • 简化单元测试

从历史上看,SpringGrails等框架并非设计用于不依赖应用服务器的应用程序Android 应用程序内存占用少的微服务等场景。 相比之下,Micronaut适用于所有这些场景。

这个目标是通过使用Java的注解处理器来实现的,这些处理器可以在支持它们的任何JVM语言上使用,也可以在Netty上构建HTTP ServerClient。 为了向SpringGrails提供类似的编程模型,这些注解处理器预编译必要的元数据,以便执行DI,定义AOP代理并将应用程序配置为在微服务环境中运行。

Micronaut中的许多API都受到SpringGrails的启发。 这是设计有助于提高开发人员的速度,帮助开发者容易的转移到Micronaut的开发上来。

2.Micronaut官网

学习任何技术,官网最为重要。

  • 官网的地址:https://micronaut.io/
  • github地址:https://github.com/micronaut-projects/

3.Micronaut快速入门

以下部分将引导您快速了解如何使用Micronaut开发一个简单的Hello World应用程序。

在开发之前,大家需要准备开发环境。要求安装Java 8 或更高的jdk版本建议使用适当的开发IDE,如 IntelliJ IDEA
要想快速入门,还建议您安装Micronaut CLI

Micronaut CLI的安装提供了linuxmacoswindows的安装方式,这里我们以windows为例。

3.1在Windows上通过二进制安装

从Micronaut网站下载最新的二进制文件。
这里wos

将二进制文件解压缩到适当的位置(例如:E:\tools\micronaut-1.2.1)
SpringBoot的竞争对手——Micronaut入门教程_第1张图片

创建一个环境变量MICRONAUT_HOME,它指向安装目录,即 E:\tools\micronaut-1.2.1

SpringBoot的竞争对手——Micronaut入门教程_第2张图片

更新PATH环境变量,追加%MICRONAUT_HOME%\bin

SpringBoot的竞争对手——Micronaut入门教程_第3张图片
现在我们可以从命令提示符运行MicronautCLI,如下所示
SpringBoot的竞争对手——Micronaut入门教程_第4张图片

3.2 创建服务端应用

我们可以使用上面安装的MicronautCLI快速创建一个新的服务端应用。
使用CLI,可以在GroovyJavaKotlin中创建新的Micronaut应用程序(默认为Java)。
以下命令使用Gradle构建在Java中创建一个新的“Hello World”服务器应用程序:

 mn create-app hello-world

如果您希望创建基于Maven的构建,则可以提供--build maven

我们还是以maven为例

创建命令如下

mn create-app hello-world --build maven

这样,Hello World的示例工程就创建创建成功

mn> mn create-app hello-world --build maven
| Generating Java project...
| Application created at D:\micronaut\hello-world
| Initializing application. Please wait...
mn>

并且我们将其导入到idea中,目录结构如下所示:
SpringBoot的竞争对手——Micronaut入门教程_第5张图片
我是使用idea 是直接运行Application的main方法,
在这里插入图片描述
默认情况下,Micronaut HTTP服务器配置为在端口8080上运行。见本节在特定端口上运行服务器在用户指南中获得更多选项。

为了创建一个服务,来返回“Hello World”,首先需要一个控制器。 以下是控制器的示例:

import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;

@Controller("/hello") 
public class HelloController {

    @Get(produces = MediaType.TEXT_PLAIN) 
    public String index() {
        return "Hello World"; 
    }
}
  • 该类被定义为一个控制器,其@Controller注解映射到路径/hello
  • @Get注解用于将index()方法映射到使用HTTP GET请求
  • 返回"Hello World"

这时候,我是使用idea 是直接运行Application的main方法,启动成功。
我们是curl发送 http://localhost:8080/hello
返回了Hello World

在这里插入图片描述

3.3 创建一个客户端

如前所述,Micronaut包括HTTP服务器HTTP客户端。 (https://docs.micronaut.io/latest/guide/index.html#lowLevelHttpClient),我们可以使用开箱即用的[低级HTTP客户端]来测试3.2中创建的HelloController

import io.micronaut.context.annotation.Property;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.client.HttpClient;
import io.micronaut.http.client.annotation.Client;
import io.micronaut.runtime.server.EmbeddedServer;
import io.micronaut.test.annotation.MicronautTest;
import org.junit.jupiter.api.Test;

import javax.inject.Inject;

import static org.junit.jupiter.api.Assertions.assertEquals;



@MicronautTest
class HelloControllerSpec {
    @Inject
    EmbeddedServer server; 

    @Inject
    @Client("/")
    HttpClient client; 

    @Test
    void testHelloWorldResponse() {
        String response = client.toBlocking() 
                .retrieve(HttpRequest.GET("/hello"));
        assertEquals("Hello World", response); //) 
    }
}

到这里一个简单的MicronautHello World程序就运行起来了。

代码已经上传Github

你可能感兴趣的:(Micronaut)