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