QCon北京|3天沉浸式学习,跳出信息茧房。 了解详情
写点什么

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

评论

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

如何有效规避代码被“投毒”?

安势信息

许可证 代码安全 开源软件 安全合规检测 开源软件供应链

阿里云联合平行云推出云XR平台,支持沉浸式体验应用快速落地

阿里云弹性计算

视觉计算 云XR平台

视频聊天源码——一对一直播系统源码

开源直播系统源码

软件开发 直播系统源码 开源源码

那一年,春晚拓荒牛背后的故事

优必选科技

机器人

结合pyqt5开发办公文档一键转换软件,以后再也不用开会员转文件了

迷彩

打包 7月月更 自动化办公

Python函数默认参数避坑指南

和牛

测试

【Docker 那些事儿】初始 Kubernetes 容器管理平台(上)

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

执行ls /dev/pts为什么这么慢?

BUG侦探

内核 ebpf devpts

ES6 类聊 JavaScript 设计模式之创建型模式

devpoint

JavaScript 设计模式 工厂模式 7月月更 创造性模式

到底什么是自助洗车?来科普下

共享电单车厂家

自助洗车加盟 车白兔自助洗车 什么是自助洗车

openGauss内核分析:查询重写

华为云开发者联盟

数据库 后端 查询 SQL语言 openGauss内核

商城异地多活架构设计

泋清

#架构训练营

自助洗车加盟要满足什么条件

共享电单车厂家

自助洗车加盟 车白兔自助洗车

自助洗车或许要比自动洗车更干净

共享电单车厂家

自助洗车 自助洗车加盟 车白兔自助洗车 自动洗车

龙蜥社区发布首个 Anolis OS 安全指南 为用户业务系统保驾护航

OpenAnolis小助手

阿里云 操作系统 龙蜥社区 sig 统信软件

从一线开发到技术总监,你就差一个赶鸭子上架

融云 RongCloud

程序员

TMECH发表优必选运控技术最新进展:实现人形机器人高鲁棒性行走

优必选科技

ICASSP 2022 | 用于多模态情感识别的KS-Transformer

优必选科技

人工智能 多模态机器学习

让软件开发民主化的低代码

力软低代码开发平台

单元测试,写起来到底有多痛?你会了吗

C++后台开发

网络编程 单元测试 后端开发 Linux服务器开发 C++开发

自助洗车为洗车行业注入新活力

共享电单车厂家

自助洗车 自助洗车加盟 车白兔自助洗车 洗车行业市场

适合新手的12个Mybatis-Plus常用注解

华为云开发者联盟

后端 开发

【盲盒APP商城系统】在线拆盒后的功能介绍

WDL22119

盲盒小程序开发 盲盒APP开发 盲盒源码 盲盒H5开发 盲盒系统开发

带你认识一下数仓的分区自动管理

华为云开发者联盟

数据库 后端 分区

SpringBoot到底是什么

华为云开发者联盟

开发 springboot parent

自助洗车费用居然比雪糕还便宜?

共享电单车厂家

自助洗车加盟 车白兔自助洗车 自助洗车费用 自助洗车价格

海外APP推送(上篇):厂商通道与谷歌FCM通道的差异

极光JIGUANG

云渲染,设计行业的“新贵”

Finovy Cloud

渲染 云渲染 GPU算力 渲染技术

从云原生到智能化,深度解读行业首个「视频直播技术最佳实践图谱」

阿里云CloudImagine

音视频 直播 视频云

专业创作本华硕ProArt 创16 2022预售,高效创作新旗舰

科技热闻

业务出海,灵感乍现前要先「把手弄脏」

融云 RongCloud

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