写点什么

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

  • 2019-01-30
  • 本文字数:1755 字

    阅读完需:约 6 分钟

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

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 应用运行:


 @SpringBootApplication public class Application {    public static void main(String... args) {        Micronaut.run(Application.class);        // SpringApplication.run(Application.class);    }
复制代码


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


命令:


./gradlew bootRun
复制代码


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


curl -X GET http://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.jar io.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 Allows Spring Boot Apps to Run as Micronaut Apps](



2019-01-30 08:006048

评论

发布
暂无评论
发现更多内容

一起单测引起的项目加载失败惨案

京东科技开发者

HyperWorks作业递交面板设置

智造软件

CAE Hypermesh hyperworks

DolphinScheduler集成Arthas实现接口调用监控,提升调度任务可靠性

白鲸开源

工作流调度 Apache DolphinScheduler #开源

经济下行,当下企业如何破局?

禅道项目管理

需求管理 IPD 市场分析 IPD落地 IPD培训

【征程 6 工具链性能分析与优化-2】模型性能优化建议

地平线开发者

自动驾驶; #算法

DistilQwen2:通义千问大模型的知识蒸馏实践

阿里云大数据AI技术

人工智能 知识蒸馏 通义千问

如何配置 GreptimeDB 作为 Prometheus 的长期存储

Greptime 格睿科技

存储 时序数据库 Promethues

如何利用模版进行设置仿真默认参数z

思茂信息

教程 模板 cst

征程 6E camera diag sample

地平线开发者

自动驾驶 算法

加锁失效,非锁之过,加之错也|京东零售供应链库存研发实践

京东零售技术

后端 加锁

2025郑州等保测评机构名称看这里!

行云管家

等保 等级保护 郑州

非凸科技助力第49届ICPC亚洲区域赛(成都)成功举办

非凸科技

ICPC

第二届全国高校软件测试开发教育峰会在韩山师范学院隆重举办!

测吧(北京)科技有限公司

测试

低代码平台服务编排提升

鲸品堂

低代码 交付工具 企业号 2024年11月PK榜

漆包线自动称重系统

万界星空科技

mes 智能称重系统 电子称重系统 万界星空科技 漆包线工厂

【堡垒机小知识】堡垒机用户认证是什么意思?一般有哪些方式?

行云管家

网络安全 堡垒机

第二届全国高校软件测试开发教育峰会在韩山师范学院隆重举办!

测试人

人工智能 软件测试 测试开发 高校

昆仑万维重磅发布天工AI高级搜索功能,做最懂金融投资、科研学术的AI搜索

新消费日报

服装品牌必备:智能商品管理系统,打造高效运营新引擎!

第七在线

基于IM场景下的Wasm初探:提升Web应用性能|得物技术

得物技术

rust web前端 Wasm

淘宝详情API接口全解析:如何获取与应用

代码忍者

API 接口 pinduoduo API

一文说清什么是数据要素

郑州埃文科技

数据要素

指标+AI+BI:构建数据分析新范式

袋鼠云数栈

程序员的幽默时刻:编程界的笑话集锦100

天津汇柏科技有限公司

程序员 软件开发

基于图遍历的Flink任务画布模式下零代码开发实现方案

京东科技开发者

常规LED广告显示屏运营成本怎么估算

Dylan

广告 运营 LED display LED显示屏 全彩LED显示屏

【征程 6 工具链性能分析与优化-1】编译器预估 perf 解读与性能分析

地平线开发者

Micronaut for Spring支持Spring Boot应用以Micronaut形式运行_语言 & 开发_Michael Redlich_InfoQ精选文章