社区 IntelliJ IDEA Java 提示和技巧

网络研讨会总结:利用IntelliJ IDEA开发Micronaut应用

2020年9月18日,我们举办了“使用IntelliJ IDEA开发Micronaut应用”的现场网络研讨会伊万·洛佩兹,对象计算高级软件工程师。这一节包括对Micronaut框架的简要概述,并提供了许多实际示例。

IntelliJ IDEA提供特定于Micronaut框架的编码帮助。例如,您可以自动完成Ctrl + Space在应用程序的参数。属性和应用程序。Yml文件,参见快速文档Ctrl +问,并导航到它们的定义按住Ctrl键.还有与Bean验证和端点工具窗口的集成。

会议的细节

在深入现场演示之前,Iván分享了对Micronaut框架的概述。他提到,Micronaut不仅用于创建微服务,还用于无服务器应用程序。一个超轻量级的JVM框架,它非常有效地使用内存,Micronaut是一个基于Netty的响应式框架,它可以与Java、Groovy和Kotlin一起工作。

由于开发Micronaut的核心团队有很长时间使用Spring的背景,Iván提到,Spring和Spring Boot开发人员在使用Micronaut时,在概念、注入、控制器、存储库和其他方面会感觉很舒服。

然后他详细介绍了使Micronaut区别于其他框架的特性,即提前编译。传统的基于注释的JVM框架,如Spring或MicroProfile,在运行时分析应用程序(用于控制器、服务、自动配置等),并将所有这些信息缓存到内存中。但是,当开发人员编译他们的应用程序时,Micronaut会生成类,其中包括理解他们的应用程序所需的元信息。Micronaut不需要内存缓存。Micronaut不需要使用反射或运行时代理、动态类加载或动态字节代码生成。这将导致更快的启动和非常低的内存占用。

Iván分享说,开发人员可以使用Micronaut构建云本地和无服务器的应用程序,它支持多种特性,如自我发现、12因素应用程序、外部化配置、内置HTTP客户端、分布式跟踪和安全性。还可以使用Micronaut创建CLI(命令行接口)应用程序、gRPC应用程序和消息传递应用程序。Micronaut Data是一个轻量级层,用于访问数据库和执行查询。Micronaut支持开箱即用的GraavlVM。

Micronaut 1.0于2018年10月发布,自那时起,Micronaut已经发布了35个版本。最新的稳定版Micronaut版本是2.0.2。

Iván展示了如何使用CLI launch.micronaut引导一个Micronaut应用程序。IntelliJ IDEA的项目向导。IntelliJ IDEA用户在使用IntelliJ IDEA项目向导引导他们的Micronaut应用程序时,可以使用他们喜欢的功能或快捷方式,比如使用搜索来查找他们想要添加到应用程序中的功能。

然后,Iván演示了如何使用多个特性引导“Hello World”Micronaut应用程序,这些特性包括:Micronaut Data JDBC、Flyway数据库迁移、Hikari JDBC连接池、MySQL开源数据库、testcontainer和Micronaut管理。在IntelliJ IDEA创建了项目文件之后,他执行了测试类。

然后,他向应用程序添加了一个“HelloWorld”控制器和服务,建议为控制器中的服务注入构造函数,而不是字段注入选项。前者有助于球场的决赛。

开发人员通常从他们的IDE切换到internet浏览器窗口来测试他们的web应用程序。这在IntelliJ IDEA中不是必需的。Iván演示了IntelliJ IDEA中基于文本的集成HTTP客户端,通过单击HTTP控制器旁边的gutter区域中的图标,可以从IDE中测试对应用程序的公共端点的请求。

然后,Iván演示了如何将HTTP请求定义为文本,并使用IntelliJ IDEA中的同一个HTTP客户端窗口运行它们。由于窗口是IDE的一部分,您可以使用相同的快捷方式,如复制文本行并移动它们。您还可以使用此窗口将cURL请求转换为HTTP请求。如果不确定如何输入这些值,可以单击右上方的“示例”选项卡,以获得get或POST请求、授权请求和测试请求的示例。

Iván还演示了如何使用Micronaut Management—显示端点的信息、bean、运行状况和其他信息。

他非常友好地向我们展示了一个真实的项目,以说明IntelliJ IDEA如何帮助实现YAML文件中的配置。他演示了如何使用Gradle来编译Java任务,以获取对配置文件的更改。

Iván还演示了如何使用IntelliJ IDEA中的HTTP Client窗口来查看端点,并通过单击其名称导航到源代码。随后,Iván继续进行现场演示,展示了如何在Micronaut应用程序中使用事件。有趣的是,他演示了如何使用IntelliJ IDEA中可用于Micronaut框架的各种图标,如事件、控制器、导航到事件发布器、导航到事件侦听器、计划方法和工厂bean。

额外的资源

你可以得到Iván幻灯片的拷贝在这里

这是应用程序他在演讲中提到了Iván。

您可以从以下链接了解更多关于如何开始开发Micronuat应用程序的信息:

后续问答

虽然Iván在网络研讨会上回答了所有这些问题,但我们也将它们包括在这里,因为它们是重要的问题:

我在探索Micronaut。我找不到一种方法来将REST从存储库公开为Spring DATA。有没有类似的功能,或者将来会有?

Iván:可以在控制器中注入一个Micronaut Data存储库并公开它,但这被认为是不好的做法。在我看来,您应该创建一个使用存储库并被注入到控制器中的服务。还可以使用DTO,而不是直接公开域实体。

有没有像Groovy、Kotlin和Java那样直接支持Scala的计划?

Iván:是的,我们有一个悬而未决的问题,它包含在我们未来的路线图中。请参阅https://github.com/micronaut-projects/micronaut-core/issues/675

Micronaut如何对待龙目岛?

Iván:没有任何问题。您需要注意的唯一一件事是在添加Micronaut依赖项之前添加Lombok annotationProcessor依赖项。

Micronaut支持Vaadin吗?

Iván:我们没有与Vaadin进行特定的集成,但我认为您可以直接使用该库。Micronaut可以提供静态资源,看一下https://docs.micronaut.io/latest/guide/index.html#staticResources

我可以在GitHub上找到示例项目吗?

Iván:我不能共享这里展示的项目代码,但是在这个存储库中https://github.com/ilopmar/micronaut-testing-best-practices/您可以找到与演示项目类似的结构。

swagger能否基于控制器类定义生成模式?

Iván:如果你指的是。class,那么答案是否定的。swagger/openapi YAML文件是在编译时生成的,所以Micronaut需要编译代码才能生成swagger/openapi文件。

与春云阿里巴巴有何不同?

Iván:从我在他们的存储库中看到的,他们已经提供了一组针对特定目的配置的不同工具。有了Micronaut以及我们与第三方库的集成,您也可以实现同样的目标。

您是否支持度量注册表(或)运行状况度量?

伊凡:是的。我们支持千分尺与许多不同的后端,看https://micronaut-projects.github.io/micronaut-micrometer/latest/guide/index.html.我们还提供其他管理和运行状况端点:https://docs.micronaut.io/latest/guide/index.html#management

对使用Micronaut和Kotlin有什么建议吗?我在使用JetBrains编译器和基于kotlin的Micronaut应用程序时遇到了问题,即使启用了注释处理。只是委托给Gradle或其他想法?

Iván:使用Gradle从命令行集成应该不会有任何问题。关于与IntelliJ IDEA的集成,Kotlin问题跟踪器中有一个有待改进的问题:https://youtrack.jetbrains.com/issue/KT-15040

哪个前端框架与Micronaut集成得最好?

Iván:任何你想要并且觉得舒服的前端框架。如果你用Micronaut创建一个RESTful JSON API,你可以使用任何前端:Vue.JS、React、Angular、jQuery等等。

我们的下一个网络研讨会

对于我们IntelliJ IDEA的所有用户,我们将举办另一个关于“在IntelliJ IDEA使用SQL和数据库”。

加入我们10月16日,星期五,中国东部时间下午4:00 - 5:00现在注册

在推特上关注我们这样你就不会错过更新了。

发展中快乐!

发现更多的

Baidu