Micronaut框架 初探

一、简介

引用官网的话“A modern, JVM-based, full-stack framework for building modular, easily testable microservice and serverless applications.”

就是新一代基于JVM,用于构建模块化、易测的全栈微服务和无服务应用框架,他是Grails框架作者的最新力作,关于Grails框架介绍传送门

micronaut的特性有:

  • 多种语言的框架,支持Java、Groovy、Kotlin
  • 快速启动、低内存消耗,基于反射的IoC框架为代码中的每个字段、方法和构造函数加载和缓存反射数据,而使用微处理器,应用程序的启动时间和内存消耗不受代码库大小的限制。
  • 使用GraalVM启动microaut应用程序只需几十毫秒:GraalVM是来自Oracle的一个新的通用虚拟机,它支持polyglot运行时环境,并且能够将Java应用程序编译成本机代码。
  • 声明式、响应式、编译时HTTP客户端:声明性地构建响应性HTTP客户端,在编译时实现,减少内存消耗。
  • 建立在NETTY上的非阻塞HTTP服务器:Micronaut的HTTP服务器可以尽可能轻松地公开HTTP客户端可以使用的api。
  • 快速简单的测试:轻松地在单元测试中启动服务器和客户端,并立即运行它们。
  • 高效的编译时依赖注入和AOP:Micronaut提供了一个简单的编译时面向方面的编程API,它不使用反射。
  • 构建完全响应性和非阻塞的应用程序:支持任何实现响应流的框架,包括RxJava和响应器。
  • 本地原生云:对公共发现服务、分布式跟踪工具和云运行时的支持。

二、环境安装

micronaut从4.0.0版本开始要求JDK最低为61(jdk17),以下以3.8.12版本为示例,该版本支持版本52(jdk8)

  1. 官网下载安装包,并解压
  2. 创建一个 MICRONAUT_HOME 环境变量指向解压目录。
  3. 将 $MICRONAUT_HOME/bin 添加到 PATH 中。

#micronaut

export MICRONAUT_HOME=/usr/local/micronaut

export PATH=$PATH:$MICRONAUT_HOME/bin

然后在命令行中,执行 mn -V 查看是否环境安装正确,首先你也已经安装 JDK 环境了,如果出现以下版本安装完成

Micronaut框架 初探

micronaut也支持sdk、homebrew的方式去安装

$ brew install micronaut

三、创建项目

在命令行执行 mn create-app 项目名 即可创建一个micronaut项目

--lang groovy|java,lang参数指定开发语言,默认为java
--build maven|gradle,build参数指定构建类型,默认为gradle
--features data-jpa,data-jdbc,mysql,jdbc-hikari等,featrues参数指定增加依懒
Micronaut框架 初探

创建完成后,进入项目,运行./gradlew run启动项目

Micronaut框架 初探

启动成功就可以访问服务了

四、服务调用 HTTP Client 使用

HTTP Client 简化了服务的调用,首先需要在项目build.gradle中引入依懒

implementation(“io.micronaut:micronaut-http-client”)

然后在调用的地方,比如Controler中引入

@Client("http://www.baidu.com")
@Inject
RxHttpClient client

@Get("/callBaidu")
String callBaidu() {
String result = client.toBlocking().retrieve("http://www.baidu.com")
return result
}

@Get("/callBaiduNonBlocking")
Maybe<String> callBaiduNonBlocking() {
return client.retrieve("http://www.baidu.com").firstElement()
}

retrieve方法它将执行HTTP请求并以你请求的任何类型(默认为字符串)作为RxJava流返回正文,需要注意的是,Client注解有几种参数类别

  • 绝对地址,比如”http://www.baidu.com/
  • 相对地址,比如 “/demo/sayHello”,会访问当前服务的这个地址
  • 服务标识,比如”demo”,会去注册中心寻找”demo”的服务

当你访问 xxx/callBaidu 的时候就会返回百度网页字符串了,第一种方式阻塞访问,程序会一直等到访问返回结果,推荐第二种非阻塞访问

五、数据访问

micronaut非常方便的集成多种持久层框架的访问,如hibernate、mybatis、spring data jpa,后续再探索数据访问这块内容

原创文章,作者:LeeC,如若转载,请注明出处:https://digoak.com/technology/04/micronaut%e6%a1%86%e6%9e%b6-%e5%88%9d%e6%8e%a2/

发表评论

登录后才能评论