体验 micronaut 微服务框架

news2025/1/13 17:03:11

体验 micronaut 微服务框架

  • 谁在使用 MICRONAUT
  • 主要特点
  • 代码示例展示几点特性
  • 原生云原生
  • 安装 Micronaut 命令行工具
  • 创建一个 MICRONAUT 应用程序

MICRONAUT是基于 JVM 的现代全栈框架,用于构建模块化、易于测试的微服务和无服务器应用程序。

谁在使用 MICRONAUT

在这里插入图片描述

主要特点

  1. 多语言框架,与Java,Groovy和Kotlin兼容,路线图上有Scala。
  2. 原生云原生,内置云支持,包括发现服务、分布式跟踪和云运行时
  3. 快速数据访问配置,快速配置你喜欢的数据访问层和 API 以编写你自己的数据访问层
  4. 平滑的学习曲线,以您习惯的方式使用熟悉的注解,快速实现收益
  5. 快速、简单的单元测试,在单元测试中轻松启动服务器和客户端并即时运行它们
  6. 面向切面的 API,提供不使用反射的简单、编译时、面向方面的编程 API
  7. 无缝的 API 可见性,通过对OpenAPI和Swagger的支持,你的消费者将拥有与你的服务集成所需的一切。
  8. AOP 编译,通过前期完成繁重的工作,保持较低的启动时间和内存占用

代码示例展示几点特性

  1. 基于NETTY的非阻塞HTTP服务器
    在这里插入图片描述
  2. 声明式、反应式、编译时 HTTP 客户端
    在这里插入图片描述
  3. 快速简便的测试
    在这里插入图片描述

原生云原生

Micronaut框架的云支持是内置的,包括对常见发现服务,分布式跟踪工具和云运行时的支持。
在这里插入图片描述

安装 Micronaut 命令行工具

为了在macOS,Linux或Windows上快速轻松地启动,你可以使用SDKMAN!(软件开发工具包管理器)下载并配置你选择的任何Micronaut版本。

  1. 下载和安装sdkman,
curl -s https://get.sdkman.io | bash
  1. 使用sdkman安装micronaut
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install micronaut
  1. 查看micronaut命令行工具的版本
mn --version

创建一个 MICRONAUT 应用程序

  1. 使用 Micronaut 命令行工具或 Micronaut Launch 界面创建应用程序。
mn create-app com.oracle.micronaut.micronautguide --build=maven --lang=java

注意:如果你未指定参数--build,系统会将 Gradle 用作构建工具。如果未指定参数--build--lang,则使用 Java 作为开发语言。
上一个命令在名为 micronautguide 的目录中使用默认包 com.oracle.micronaut 创建一个 Micronaut 应用程序。

  1. 启用注解处理
    如果你使用 Java 或 Kotlin 和 IntelliJ IDEA,请确保启用注解处理。
    在这里插入图片描述
  2. 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);
    }
}
  1. 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!";
    }
}
  1. 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框架初始化应用程序上下文和嵌入式服务器。
@MicronautTest
public class MainControllerTest {

    // 注入 HttpClient Bean 并将其指向嵌入式服务器。
    @Inject
    @Client("/")
    HttpClient client;

    @Test
    public void testMain() {
        // 创建HTTP请求很容易,这要归功于Micronaut框架API。
        HttpRequest<String> request = HttpRequest.GET("/");
        String body = client.toBlocking().retrieve(request);

        assertNotNull(body);
        assertEquals("Hello World!", body);
    }
}

  1. 测试
./mvnw test

在这里插入图片描述

  1. 运行应用程序
./mvnw mn:run
  1. 构建原生镜像
./mvnw package -Dpackaging=native-image
  1. 运行原生镜像
./target/micronautguide
  1. 通过curl访问
curl localhost:8080; echo

在这里插入图片描述
完结!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/178879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学建模——评价算法

层次分析法&#xff08;AHP&#xff09; 步骤 1.建立层次结构模型&#xff1b; 2.构造判断(成对比较)矩阵&#xff1b; 3.层次单排序及其一致性检验&#xff1b; 4.层次总排序及其一致性检验&#xff1b; 建立层次结构模型 将决策的目标、考虑的因素(决策准则)和决策对象按…

【HBase入门】5. 常用 Shell 操作(2)

前言 我们可以以shell的方式来维护和管理HBase。例如&#xff1a;执行建表语句、执行增删改查操作等等。 导入测试数据集 需求 在资料的 数据集/ ORDER_INFO.txt 中&#xff0c;有一份这样的HBase数据集&#xff0c;我们需要将这些指令放到HBase中执行&#xff0c;将数据导入…

申请Moonbeam Accelerator孵化计划申请答题指导

Moonbeam Accelerator是一个为期10 周的孵化计划&#xff0c;由Moonbeam基金会、Arrington Capital和Rokk3r共同推出&#xff0c;旨在帮助初创团队提高技术、业务、营销、金融和融资技能&#xff0c;助力您的Web3创业之梦。 申请孵化计划有任何限制吗&#xff1f;没有&#xff…

BFS(二)二叉树层序遍历(I、II)、二叉树锯齿形层序遍历、N叉树层序遍历

目录 102. 二叉树的层序遍历 107. 二叉树的层序遍历 II 103. 二叉树的锯齿形层序遍历 429. N 叉树的层序遍历 102. 二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。…

VUE3/TS/TSX入门手册指北

VUE3入门手册vue3入门首先 查看 官方文档&#xff1a;https://cn.vuejs.org/guide/quick-start.html如果有vue2基础&#xff0c;速成课程&#xff1a;https://www.zhoulujun.co/learning-vue3/component.html&#xff08;官方文档 还是建议 翻一遍&#xff09;VUE3深入首先看源…

STM32+python产生三角波

目录任务目标实现方法python制作数表由于项目需要&#xff0c;需要产生一个三角波&#xff0c;需要覆盖4000个点的一个数组&#xff0c;这样的数组点数太多了&#xff0c;肯定不能自己一个一个手写了。最简单的一个方法是在嵌入式程序中用C写一个函数&#xff0c;对一个数组&am…

基于蜣螂优化的Elman神经网络数据预测-附代码

基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 文章目录基于蜣螂算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立4.基于蜣螂优化的Elman网络5.测试结果6.参考文献7.Matlab代码摘要&#xff1a;针对…

LwIP系列--内存管理(内存池)详解

一、目的在《LwIP系列--内存管理&#xff08;堆内存&#xff09;详解》中我们详细介绍了LwIP中内存堆的实现原理&#xff0c;本篇我们介绍LwIP中内存池的实现细节。在LwIP源码中为了满足特定内存分配的需要以及优化内存占用制定了各种尺寸大小的内存池&#xff08;每种内存池管…

Golang应用执行Shell命令实战教程

本文学习如何在Golang程序中执行Shell命令&#xff08;如&#xff0c;ls&#xff0c;mkdir或grep&#xff09;&#xff0c;如何通过stdin和stdout传入I/O给正在运行的命令&#xff0c;同时管理长时间运行的命令。为了更好的理解&#xff0c;针对不同场景由浅入深提供几个示例进…

77、TensoRF: Tensorial Radiance Fields

简介 主页&#xff1a;https://apchenstu.github.io/TensoRF/ 总体而言&#xff0c;该文章主要内容于DVGO类似 将场景的亮度场建模为4D张量&#xff0c;它表示一个具有每体素多通道特征的3D体素网格&#xff0c;中心思想是将4D场景张量分解为多个紧凑低秩张量分量&#xff0c…

06 | 要找工作了,应该如何准备?

前言 前言&#xff1a;找工作更像相亲&#xff0c;总有一款适合自己。简历就像一份广告&#xff0c;对方要什么你写什么&#xff0c;而不是你有什么。 文章目录前言一、找工作的流程二、做法1. 分析职位描述&#xff08;JD&#xff09;1&#xff09;组成2&#xff09;做法一、找…

【数据结构】7.2 线性表的查找

7.2.1 顺序查找&#xff08;线性查找&#xff09; 应用范围&#xff1a; 顺序表或线性链表表示的静态查找表。表内元素之间可以无序。 数据元素类型定义&#xff1a; 数据表可能有多个数据域的值&#xff0c;比如成绩表中有姓名、成绩、总分等。所以用结构类型来表示要存储…

背景颜色和背景图片

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <!--这行代码是告诉浏览器需要使用"utf-8"字符集打开 因为HBuilder工具是采用utf-8编码的 注意&#xff1a;并不是设置当前页面的字符集编码方式--> …

SpringMVC(十二):SpringMVC文件下载

文章目录 SpringMVC文件下载 一、下载之前的准备 二、下载的基本流程 三、下载的请求数据 1、下载的后台实现 2、下载的示例代码 SpringMVC文件下载 一、下载之前的准备 展示所有玩家信息&#xff0c;包括图片展示。 <% page contentType"text/html;charset…

Linux_常见命令

1.ls ls -l 列出隐藏文件&#xff0c;并显示10项权限,类似如同下图 在部分发行版本的linux下&#xff0c;ll等同于ls -l 首先&#xff0c;第一列为-则代表着这一列是文件&#xff0c; 第一列为d则代表这一列为目录 除了第一位&#xff0c;那么其他还有9位&#xff0c;分为3组…

学习shell与shell script 02_vim 的保存恢复与打开时的警告信息

[1] Stopped vim test.txt $kill -9 %1[1] Stopped vim test.txt $jobs [1] Killed vim test.txt编辑一个文件后&#xff0c;使用Ctrl z 挂起。然后被不正常中断&#xff0c;导致暂存盘无法通过正常的流程来结束。所以暂…

AHB协议(2/2)

Charpter 4 Bus Interconnection 4.1 互联结构 互联结构在系统中提供了M端和S端的连接。单一的M端只需要使用一个解码器和多路选择器。 一个多M端的系统中需要使用提供仲裁和将信号从不同的M端分发到对应的S端的互联结构。分发结构需要地址&#xff0c;控制信号和写数据。 4…

ARM uboot的常用命令

一、uboot 的常用命令1 1、类似 linux 终端的行缓冲命令行 (1) 行缓冲的意思就是&#xff1a;当我们向终端命令行输入命令的时候&#xff0c;这些命令没有立即被系统识别&#xff0c;而是被缓冲到一个缓存区&#xff08;也就是系统认为我们还没有输入完&#xff09;&#xff…

2.5 变量与常量

文章目录1.变量1.1 变量的声明1.2 变量的命名1.3 变量的初始化1.4 变量的使用2 常量1.变量 和其他的编程语言一样&#xff0c;JAVA也是用变量来存储值的&#xff0c;常量可以理解为一种特殊的变量&#xff0c;其特殊在它的值是不变的。 1.1 变量的声明 声明变量本质就是创造…

自动驾驶感知——环境感知的基本概念

文章目录1. 智能汽车概述1.1 汽车新四化1.2 智能网联汽车1.3 SAE J3016自动驾驶分级标准2. 环境感知定义2.1 智能网联汽车系统架构2.2 环境感知定义及对象3. 各类传感器的介绍4. 环境感知经典算法概述5. 自动驾驶仿真软件的功能5.1 背景介绍5.2 自动驾驶仿真软件平台背后的科学…