当前位置: 首页 > 工具软件 > Micronaut > 使用案例 >

五分钟介绍 Micronaut

陶睿
2023-12-01

Micronaut是用于创建微服务应用程序的新的开源Java / JVM框架。由Grails框架的创建者领导开发,并由Object Computing支持。该项目正在积极致力于其官方1.0版本。

过去,我曾将Grails用于一些个人项目,目前主要在JVM生态系统中工作。因此,当我看到有关Micronaut的公告时,我决定尝试一下,看看它的全部含义。

Micronaut的目标是提供快速的启动时间和较小的内存占用。两者对于部署微服务都很重要。

入门

要开始构建应用程序,用户指南建议安装Micronaut CLI。完成安装后,可以使用以下命令创建一个新项目。

<span style="color:#f8f8f2"><span style="color:#eff0f9"><code>mn create-app my-app-name
</code></span></span>

默认情况下,这会创建一个Gradle脚本来使用Micronaut来构建Java应用程序。您也可以指定maven作为构建脚本,并指定Java,Groovy或Kotlin作为编程语言。对于我的示例,我选择使用Groovy。在查看生成的项目结构时,如果您以前使用过Spring框架,将会感到非常熟悉。

要启动该应用程序,只需运行:

<span style="color:#f8f8f2"><span style="color:#eff0f9"><code>./gradlew run
</code></span></span>

您还可以Application直接使用IDE 编译应用程序并在类中运行main方法。

控制器

与Spring Framework中的控制器很像,使用@Controller注解以声明方式定义控制器。带@Controller注解的类或其他注解将自动检测到。与其他框架(如Spring)不同,后者依赖于运行时类路径扫描,而这是在编译时完成的。

一个简单的控制器如下所示:

<span style="color:#f8f8f2"><span style="color:#eff0f9"><code>import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get

@Controller("/api/todo")
class TodoController {
    @Get("/{id}")
    Todo getTodo(int id) {
      //Do something with the id from the URI
    }    
}
</code></span></span>

@Get注释被放置到将处理在组合URL的GET动作的方法@Controller@Get注释。其他HTTP方法(POST,PUT等)还存在其他注释。URL支持路径变量,并且路径变量由占位符({id}在这种情况下)和匹配方法参数组成。从控制器方法返回的对象将自动转换为JSON。

Beans

可以使用类上的注释来定义Bean。与控制器一样,可以通过类路径扫描找到并注册bean。有几种不同的注释(@Singleton@Prototype等)用于创建具有不同范围的bean。因此,例如,我可以使用Singleton注释创建服务。

<span style="color:#f8f8f2"><span style="color:#eff0f9"><code>import javax.inject.Singleton

@Singleton
class TodoService {
  //Provide some implementation
}
</code></span></span>

依赖注入

使用JSR-330 @Inject批注提供依赖项注入。与其他框架不同,Micronaut在编译时执行依赖项注入。这避免了使用反射/代理,并有助于缩短启动时间。

所述@Inject注释可以用于通过构造子注入,场注入,和方法参数注入依赖。

从前面扩展控制器示例,我们可以按如下所示注入服务:

<span style="color:#f8f8f2"><span style="color:#eff0f9"><code>import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
import javax.inject.Inject

@Controller("/api/todo")
class TodoController {
    TodoService todoService

    @Inject
    TodoController(TodoService todoService) {
      this.todoService = todoService
    }

    @Get("/{id}")
    Todo getTodo(int id) {
      //Do something with the id from the URI
    }    
}
</code></span></span>

结论

此快速概述仅勉强介绍了Micronaut中已提供的功能。该用户指南是全面的,并提供了大量的对所有的功能极大的信息。从Spring Framework进入Micronaut的开发人员会发现它非常熟悉。

考虑到该框架尚未达到正式的1.0版本,它似乎已经非常强大。我期待看到它如何继续发展。

from:https://dev.to//mkbaldwin/micronaut-a-five-minute-introduction-c27

 类似资料: