Micronaut for Spring 支持 Spring Boot 应用以 Micronaut 形式运行

栏目: Java · 发布时间: 5年前

内容简介:在Micronaut for Spring 添加了对 Spring 基于注解的编程模型的支持,这种模型已经有很长时间的历史了,这样所构建的 Micronaut 应用和库能够与 Micronaut 和 Spring 协作。Micronaut for Spring 采用预先编译的方式,能够实现如下功能:将 Spring 组件集成到 Micronaut 应用中;将 Spring 应用运行为 Micronaut 应用;将 Micronaut bean 暴露给 Spring 应用。

Micronaut 1.0.1 小版本发布的同时,Object Computing, Inc.(OCI)还发布了 Micronaut for Spring 1.0 M1 。在 发布说明 中这样写到:

Micronaut for Spring 添加了对 Spring 基于注解的编程模型的支持,这种模型已经有很长时间的历史了,这样所构建的 Micronaut 应用和库能够与 Micronaut 和 Spring 协作。

Micronaut for Spring 采用预先编译的方式,能够实现如下功能:将 Spring 组件集成到 Micronaut 应用中;将 Spring 应用运行为 Micronaut 应用;将 Micronaut bean 暴露给 Spring 应用。

Jonathan Giles 是微软的软件工程师,最近 讨论了开发人员为何应该考虑迁移至 Micronaut

在 Spring Boot 和 MicroProfile 中开发人员认为理所应当的事情,Micronaut 却采用了一种与众不同的方式来实现。Micronaut 没有像 Spring Boot 和 MicroProfile 那样进行运行时的注解处理,而是使用了编译时的注解处理器,除了你自己的代码以外,这些处理器会编译生成额外的类。这意味着启动时间会大幅减低,因为它减少了扫描项目 classpath 所需要的开销。实际上,Micronaut 会尽可能避免使用反射,只有在绝对必要的时候才会使用。

Micronaut 之前被称为 Particle 项目,它是一个全栈的基于 JVM 的框架,用于创建基于微服务的、云原生的、serverless 应用,可以使用 Java 、Groovy 和 Kotlin 编写。 Graeme Rocher 是 OCI 的首席软件工程师、Grails 和 Micronaut 产品的负责人,他在 2018 年 3 月的 Greach 会议上首次介绍了 Micronaut在实现 1.0 版本的过程中 ,Micronaut 经历了三个候选版本,这些版本之间的间隔时间都不超过三周,在此之后的 2018 年 10 月底, 1.0 的正式版本发布

样例应用

Micronaut for Spring 仓库 中包含了一个 样例应用 ,该样例阐述了如何使用 Micronaut for Spring,同时包含了将应用转换为 GraalVM 原生镜像的工具。

Application.java文件如下所示,在源码层面它来源于一个 Spring Boot 应用,但是可以作为 Micronaut 应用运行:

复制代码

@SpringBootApplicationpublicclassApplication{publicstaticvoidmain(String... args) { Micronaut.run(Application.class);// SpringApplication.run(Application.class); }

Spring Boot 应用和 Micronaut 应用的唯一差异在第 5 行。第 6 行在这里注释掉了,只是用来进行对比,如果是 Spring Boot 应用的话,就会使用这一行的代码了。

命令:

复制代码

./gradlewbootRun

将会构建和初始 Micronaut 服务器,如果执行下面的命令:

复制代码

curl -X GEThttp://localhost:8080/greeting?name=Mike

将会返回:

复制代码

{"id":1,"content":"Hola, Mike!"}

GraalVM

现在,我们可以在 GraalVM 上运行 Spring 应用,它已经完全兼容 Spring 基于注解的编程模型。通过 Micronaut for Spring,样例应用可以转换为 GraalVM 原生镜像。

如下的两条命令会开始这样的转换过程:

复制代码

./gradlew assemblejava -cp build/libs/greeting-service-all.jario.micronaut.graal.reflect.GraalClassLoadingAnalyzer

Micronaut 的 GraalClassLoadingAnalyzer 类会用来分析 Micronaut 应用的类加载需求。

GraalVM Java 分发版本包括了 native-image 工具,它能够构建应用的原生镜像。在调用 native-image 的时候,有很多可配置参数,如下面的列表所示:

复制代码

native-image --no-server \ --allow-incomplete-classpath \ --class-path build/libs/greeting-service-all.jar \ -H:ReflectionConfigurationFiles=build/reflect.json \ -H:EnableURLProtocols=http \ -H:Name=greeting-service \ -H:Class=greeting.example.Application \

在样例应用中,包含了一个便利的 shell 脚本 build-native-image.sh ,借助该脚本,能够自动化这个过程。生成的原生镜像可执行文件 greeting-service 可以通过如下的方式进行调用以启动服务器:

复制代码

./greeting-service

原生镜像应用就是为了快速启动而设计的,它的初始化时间只有 42 毫秒:

Micronaut for Spring 支持 Spring Boot 应用以 Micronaut 形式运行


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Collective Intelligence实战

Collective Intelligence实战

阿拉克 / 2010-9 / 58.00元

《Collective Intelligence实战》内容简介:在互联网上,利用用户的集体智慧是成功的关键。集体智慧是一种新兴的编程技术,可让您从人们访问web和与web交互的过程中找到有价值的模式、发现这些访问者之间的关系和确定他们的个人偏好及习惯等。《collective Intelligence实战》首先介绍了集体智慧的原则和构建更具交互性网站的思想,然后通过示例开发了一个直接可用的基于Ja......一起来看看 《Collective Intelligence实战》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具