体验 micronaut 微服务框架
- 谁在使用 MICRONAUT
- 主要特点
- 代码示例展示几点特性
- 原生云原生
- 安装 Micronaut 命令行工具
- 创建一个 MICRONAUT 应用程序
MICRONAUT是基于 JVM 的现代全栈框架,用于构建模块化、易于测试的微服务和无服务器应用程序。
谁在使用 MICRONAUT
主要特点
- 多语言框架,与Java,Groovy和Kotlin兼容,路线图上有Scala。
- 原生云原生,内置云支持,包括发现服务、分布式跟踪和云运行时
- 快速数据访问配置,快速配置你喜欢的数据访问层和 API 以编写你自己的数据访问层
- 平滑的学习曲线,以您习惯的方式使用熟悉的注解,快速实现收益
- 快速、简单的单元测试,在单元测试中轻松启动服务器和客户端并即时运行它们
- 面向切面的 API,提供不使用反射的简单、编译时、面向方面的编程 API
- 无缝的 API 可见性,通过对OpenAPI和Swagger的支持,你的消费者将拥有与你的服务集成所需的一切。
- AOP 编译,通过前期完成繁重的工作,保持较低的启动时间和内存占用
代码示例展示几点特性
- 基于NETTY的非阻塞HTTP服务器
- 声明式、反应式、编译时 HTTP 客户端
- 快速简便的测试
原生云原生
Micronaut框架的云支持是内置的,包括对常见发现服务,分布式跟踪工具和云运行时的支持。
安装 Micronaut 命令行工具
为了在macOS,Linux或Windows上快速轻松地启动,你可以使用SDKMAN!(软件开发工具包管理器)下载并配置你选择的任何Micronaut版本。
- 下载和安装sdkman,
curl -s https://get.sdkman.io | bash
- 使用sdkman安装micronaut
source "$HOME/.sdkman/bin/sdkman-init.sh"sdk install micronaut
- 查看micronaut命令行工具的版本
mn --version
创建一个 MICRONAUT 应用程序
- 使用 Micronaut 命令行工具或 Micronaut Launch 界面创建应用程序。
mn create-app com.oracle.micronaut.micronautguide --build=maven --lang=java
注意:如果你未指定参数--build
,系统会将 Gradle 用作构建工具。如果未指定参数--build--lang
,则使用 Java 作为开发语言。
上一个命令在名为 micronautguide 的目录中使用默认包 com.oracle.micronaut 创建一个 Micronaut 应用程序。
- 启用注解处理
如果你使用 Java 或 Kotlin 和 IntelliJ IDEA,请确保启用注解处理。
- Application.java 主类
Application.java在通过 Gradle 或部署运行应用程序时使用。如果配置正确,还可以直接在 IDE 中运行主类。
package com.oracle.micronaut;import io.micronaut.runtime.Micronaut;public class Application {public static void main(String[] args) {Micronaut.run(Application.class, args);}}
- MainController.java 控制器类
为了创建响应“Hello World!”的微服务,首先需要一个控制器。
package com.oracle.micronaut.controller;import io.micronaut.http.MediaType;import io.micronaut.http.annotation.Controller;import io.micronaut.http.annotation.Get;import io.micronaut.http.annotation.Produces;// 该类被定义为控制器,其中@Controller注映射到路径"/"。@Controller("/")public class MainController {// @Get注解将sayHello方法映射到"/"上的 HTTP GET 请求。// 默认情况下,Micronaut 响应使用 application/json。// 我们返回一个字符串,而不是一个 JSON 对象,因此我们将其 Content-Type 设置为 text/plain。@Get@Produces(MediaType.TEXT_PLAIN)public String sayHello() {// 返回字符串"Hello World!"作为结果return "Hello World!";}}
- MainControllerTest.java 测试类
创建一个测试以验证当你向 “/” 发出 GET 请求时,会获得”Hello World!”作为响应。
package com.oracle.micronaut;import io.micronaut.http.HttpRequest;import io.micronaut.http.client.HttpClient;import io.micronaut.http.client.annotation.Client;import io.micronaut.test.extensions.junit5.annotation.MicronautTest;import jakarta.inject.Inject;import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.assertEquals;import static org.junit.jupiter.api.Assertions.assertNotNull;// 通过@MicronautTest注解类,以便Micronaut框架初始化应用程序上下文和嵌入式服务器。@MicronautTestpublic class MainControllerTest {// 注入 HttpClient Bean 并将其指向嵌入式服务器。@Inject@Client("/")HttpClient client;@Testpublic void testMain() {// 创建HTTP请求很容易,这要归功于Micronaut框架API。HttpRequest request = HttpRequest.GET("/");String body = client.toBlocking().retrieve(request);assertNotNull(body);assertEquals("Hello World!", body);}}
- 测试
./mvnw test
- 运行应用程序
./mvnw mn:run
- 构建原生镜像
./mvnw package -Dpackaging=native-image
- 运行原生镜像
./target/micronautguide
- 通过curl访问
curl localhost:8080; echo
完结!