QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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:005861

评论

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

数字化转型必读:从信息化到数字化的本质是什么

雨果

数字化转型 数字化 数字化业务转型 信息化本质

《数据迁移》--单库迁移

TiDB 社区干货传送门

迁移

如何处理损坏的sst文件

TiDB 社区干货传送门

实践案例 管理与运维 故障排查/诊断

在DAYU200上实现OpenHarmony视频播放器

OpenHarmony开发者

OpenHarmony

Hashtable、HashMap、TreeMap的区别

zarmnosaj

10月月更

分享一个好问题:企业为什么要区分数据中台和数据平台?

雨果

数据中台 大数据平台

阿里前端高频vue面试题(边面边更)

bb_xiaxia1998

Vue

堡垒机推荐厂商当属哪家?为什么?咨询电话多少?

行云管家

网络安全 信息安全 数据安全 堡垒机

32天高效突击:狂刷《Java权威面试指南(阿里版)》,offer拿到手软

Geek_0c76c3

Java 数据库 开源 程序员 架构

前端技术培训后的职业规划

小谷哥

消除两个开源项目之间长达4年的分叉

TiDB 社区干货传送门

TiDB 底层架构

灵雀云全栈云原生开放平台ACP登陆VMware云市场

York

容器 云原生 数字化转型 虚拟化 应用现代化

Github星标57.9K!阿里巴巴Java面试突击汇总(全彩版)首次公开

Geek_0c76c3

Java 数据库 程序员 架构 开发

io模型

wzh

Linux io Linux Kenel IO模型

vue面试之Composition-API响应式包装对象原理

bb_xiaxia1998

Vue

vue这些原理你都知道吗?(面试版)

bb_xiaxia1998

Vue

web丨nft元宇宙链游项目系统开发模式逻辑详细(成熟源码)

I8O28578624

web前端开发培训学习后的就业方向

小谷哥

数据分析师被当作取数机怎么办?

雨果

数据中台 数据分析师

前端培训怎么学习好就业?

小谷哥

数字化转型失败率高达84%?看看数字化转型方法对不对

雨果

数字化转型

如何给TiDB集群的prometheus更换端口

TiDB 社区干货传送门

实践案例 集群管理 安装 & 部署 扩/缩容

堡垒主机是堡垒机吗?两者有什么关系?

行云管家

网络安全 信息安全 堡垒机 堡垒机主机

全网首发“Java面试考点大全”,25+专题梳理:JVM+多线程+Spring全家桶+MySQL+Redis等

Geek_0c76c3

Java 数据库 开源 程序员 开发

java培训机构口碑排名哪家比较好?

小谷哥

单刷 3 届 Hackathon,朝着理想中的数据库出发丨TiDB Hackathon 选手访谈

PingCAP

TiDB

How Good is TiDB as an HTAP System? A HATtrick Benchmark

TiDB 社区干货传送门

量化与科技的相遇!亚马逊云科技揭开神秘的量化私募

Lily

数据培训机构的学习费用是多少

小谷哥

2022年最新【Java经典面试800题】面试必备,查漏补缺;多线程+spring+JVM调优+分布式+redis+算法

Geek_0c76c3

Java 开源 程序员 架构 面试

Java面试最强10W字面经,Github访问量破百万,火热涨星中!

Geek_0c76c3

Java 开源 程序员 面试 开发

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