一、简介
引用官网的话“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)
- 从官网下载安装包,并解压
- 创建一个
MICRONAUT_HOME
环境变量指向解压目录。 - 将 $MICRONAUT_HOME/bin 添加到
PATH
中。
#micronaut
export MICRONAUT_HOME=/usr/local/micronaut
export PATH=$PATH:$MICRONAUT_HOME/bin
然后在命令行中,执行 mn -V 查看是否环境安装正确,首先你也已经安装 JDK 环境了,如果出现以下版本安装完成
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参数指定增加依懒
创建完成后,进入项目,运行./gradlew run启动项目
启动成功就可以访问服务了
四、服务调用 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/