javascript
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將會返回:
{\u0026quot;id\u0026quot;:1,\u0026quot;content\u0026quot;:\u0026quot;Hola, Mike!\u0026quot;}GraalVM
現在,我們可以在GraalVM上運行Spring應用,它已經完全兼容Spring基于注解的編程模型。通過Micronaut for Spring,樣例應用可以轉換為GraalVM原生鏡像。
如下的兩條命令會開始這樣的轉換過程:
./gradlew assemblejava -cp build/libs/greeting-service-all.jar io.micronaut.graal.reflect.GraalClassLoadingAnalyzerMicronaut的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毫秒:
相關資源:
- Jonathan Giles撰寫的使用GraalVM原生編譯Micronaut微服務實現超快啟動(2018-10-3)
- InfoQ上的全棧 JVM 框架 Micronaut 通向 1.0 版本之路(2018-10-23)
- Graeme Rocher編寫的Micronaut 1.0 GA版本發布(2018-10-23)
查看英文原文:[Micronaut for Spring Allows Spring Boot Apps to Run as Micronaut Apps](
總結
以上是生活随笔為你收集整理的Micronaut for Spring支持Spring Boot应用以Micronaut形式运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为黑科技新品上线-华为黑科技产品
- 下一篇: protobuf版本冲突