给新手看的 Micronaut 入门教程,10 分钟写出一个 Micronaut 程序

以下内容均选自 Micronaut 入门实战:基于 JVM 的微服务框架

Micronaut是什么?

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

同时,Micronaut 使用 Netty,并且对响应式编程提供一流的支持。对于 JVM 领域的全栈框架来说,Micronaut 是一个非常有前途的新成员。

Micronaut 旨在提供构建微服务所需要的一切工具,包含:

  • 依赖注入(DI)和控制翻转(IoC)。
  • 合理的默认值和自动配置。
  • 配置及配置共享。
  • 服务发现。
  • HTTP 路由。
  • 具有负载均衡的 HTTP 客户端。

同时,Micronaut 也致力于避免像 Spring、Spring Boot 和 Grails 中的弊端,通过:

  • 快速启动。
  • 减少内存占用。
  • 极少的反射使用。
  • 极少的代理使用。
  • 简单的单元测试。

在以前,像 Spring 和 Grails 这些框架并不是被设计来在 server-less、安卓 Apps 或低内存占用的场景中运行。相反,Micronaut 则是为此而生。

Micronaut 通过使用 Java 的 annotation processor 来实现以上功能,annotation processor 可以在任何支持其的 JVM 上使用,包括在使用 Netty 构建的 HTTP Server 和 Client 上。

为了提供和 Spring 以及 Grails 相似的编程模型,这些 annotation processor 预编译了必要的元数据(Metadata)来进行依赖注入、定义 AOP 代理以及配置你的应用程序,使其能够在微服务环境中运行。

创建第一个 Micronaut 程序

接下来将要创建我们的第一个 Micronaut 程序,内容包括提供一个 /hello API 接口以及相应的测试类。

然后,使用 GraalVM 提供的 native image 将程序构建为一个可运行的二进制文件。

▲创建程序

Micronaut 提供了一个 CLI(Command Line Interface,命令行接口)让我们可以方便快速地创建一个 Micronaut 程序。这个 CLI 包含了用于生成指定类型项目的命令,可以选择项目的构建工具、测试框架甚至是程序使用的语言。同时,它也提供了生成代码(如:Controller、Client Interface 和 Serverless Functions)的命令。详情可参考官网文档 Micronaut CLI。

下面我们来使用 Micronaut CLI 来创建程序,在实验楼 WebIDE 终端中执行以下命令:

mn create-app example.micronaut.complete
  • mn 用于调用 Micronaut 的 CLI。
  • create-app 即表明要创建一个 Micronaut 程序。默认情况下,create-app 会创建一个 Java Micronaut 程序,并使用 Gradle 构建系统。但你也可以使用其他的构建工具(如:Maven)和语言(如:Groovy 和 Kotlin)。
  • example.micronaut.complete 作为参数,指定了程序的默认包名和程序名,最后一个 . 号前面的内容将作为包名(此处即:example.micronaut),后面的内容将作为文件夹名(此处即:complete)。
  • </
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Micronaut 中使用 `MongoClient` 和 `MongoCollection` 操作 MongoDB 数据库,并只查询某一个字段,你可以按照以下步骤进行操作: 1. 首先,在 `build.gradle` 文件中添加 MongoDB 驱动依赖,例如: ```groovy implementation 'io.micronaut.mongodb:micronaut-mongo-sync' ``` 2. 创建一个 MongoDB 的配置文件,比如 `application.yml`,在其中配置 MongoDB 的连接信息,例如: ```yaml mongodb: uri: mongodb://localhost:27017/mydatabase ``` 3. 创建一个数据访问对象(DAO)类,用于执行 MongoDB 的查询操作,例如: ```java import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.model.Projections; import javax.inject.Singleton; @Singleton public class MyDao { private final MongoClient mongoClient; private final MongoCollection<Document> collection; public MyDao(MongoClient mongoClient) { this.mongoClient = mongoClient; this.collection = mongoClient.getDatabase("mydatabase").getCollection("mycollection"); } public Document findOneField(String fieldName) { return collection.find().projection(Projections.include(fieldName)).first(); } } ``` 在上面的代码中,我们使用 `Projections.include(fieldName)` 来指定只查询某一个字段。 4. 在需要使用该 DAO 的地方,注入 `MyDao` 对象,并调用 `findOneField` 方法即可获取只包含指定字段的查询结果,例如: ```java import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Get; import org.bson.Document; import javax.inject.Inject; @Controller("/data") public class MyController { private final MyDao myDao; @Inject public MyController(MyDao myDao) { this.myDao = myDao; } @Get("/field") public Document getField() { return myDao.findOneField("fieldName"); } } ``` 在上面的代码中,我们将 `MyDao` 对象注入到 `MyController` 中,并在 `/data/field` 路径上提供一个 GET 请求来获取只包含指定字段的查询结果。 这样,当访问 `/data/field` 路径时,将会返回只包含指定字段的查询结果。请根据你自己的实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值