2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

评论

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

第七模块总结

张靖

#架构实战营

计算机网络体系结构

淡泊明志、宁静致远

TCP 网络结构

揭开神秘面纱,如何组织一次分布式压测

博睿数据

Flutter 高性能、多功能的全场景滚动容器原理与实践

阿里巴巴终端技术

flutter 移动开发 客户端

高质量的缺陷分析:让自己少写 bug

阿里技术

技术管理 技术人生 内容合集

如何写好代码?

阿里技术

技术管理 技术人生 内容合集

【12月日更】浅谈Golang两种线程安全的map

小梁编程汇

golang 缓存 高性能 并发 多线程安全

Python爬虫实战,pymysql模块,Python实现抓取音乐评论

Java全栈架构师

Python MySQL 数据库 程序员 面试

一种播放远程TS格式媒体文件的新方案

Changing Lin

12月日更

联想企业科技集团与京东耀弘签订战略合作协议 实现合作发展新跨越

科技大数据

架构实战 - 模块七

唐敏

架构实战营

区块链数字版权,区块链数字藏品交易系统开发

a13823115807

#区块链# 区块链技术应用 区块链数字藏品

技术三板斧:关于技术规划、管理、架构的思考

阿里技术

技术管理 技术人生 内容合集

让“美”势不可挡,DataPipeline助力全球知名化妆品企业数字化营销再提速

DataPipeline数见科技

大数据 中间件 数据融合 数据迁移 数据管理

恒源云(GPUSHARE)_文本数据扩增时,哪些单词 (不) 应该被选择?

恒源云

深度学习 语音识别 语义

阿里技术 技术人成长| 内容合集

阿里技术

技术管理 技术人生 技术专题合集

如何优雅的关闭 Java 线程池

淡泊明志、宁静致远

线程池

2021年SASE融合战略路线图(一)

devpoint

SD-WAN sase 12月日更

Flutter 应用程序中使用 GridTile 小部件

坚果

28天写作 12月日更

热门招聘丨 XTransfer史上最全产品技术岗位公开招聘

XTransfer技术

产品 技术 招聘 XTransfer

国家质量基础设施(NQI)一站式服务平台,NQI云服务平台建设

a13823115807

质量基础设施一站式服务 一站式服务平台开发

飞桨中国行——生产制造专场

百度大脑

人工智能

百度API接口智能化测试探索与实践

百度开发者中心

自动化测试 API测试 智能化测试

技术人如何自我成长?

阿里技术

技术管理 技术人生 内容合集

三年磨一剑,高德体验优化总结

阿里巴巴终端技术

ios android 性能优化 移动开发 客户端

EMQ X 企业版 v4.4.0 发布:新增三项集成支持、增强异常诊断能力

EMQ映云科技

云原生 物联网 IoT mqtt 规则引擎

多行内容超出...显示的终极解决方案

CRMEB

PMI 的野望

Franklin 许峰

DevOps 敏捷 Lean 规范敏捷 PMI

安装TortoiseGit教程 手把手教学

Z.

git 工具 安装 Tortoisegit

王者荣耀商城异地多活架构设计

张靖

#架构实战营

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