最近项目正在使用Micronaut。简单谈谈它和SpringBoot相比的区别和优势。
Micronaut的主要卖点是编译时依赖注入,Spring作为现在的主流依赖注入框架,依靠的是运行时依赖注入,运行时依赖注入是通过反射调用和proxy实现的。相比之下编译时依赖注入会带来两个好处:应用启动时间变短;
应用内存占用变少;
这就产生了一些有趣的应用场景,比如用Micronaut编写可以运行在AWS Lambda的serverless function,或者Command line application。
Micronaut完全支持JSR330 annotation(比如@Inject)。在编译时Micronaut会进行annotation processing 生成一封针对你的应用的JavaEE CDI specs实现。JavaEE CDI specs可以在这里找到: Contexts and Dependency Injection for Java Specification
国外大神对比了Micronaut和springboot的应用启动时间及内存占用:Performance Comparison Between Spring Boot and Micronaut 这里对比的是Micronaut 1.0RC版本的性能,现在Micronaut发布的最新版本是2.0.3
此外Micronaut还无缝支持reactive 编程,对gPRC也用很好的支持。目前主要的缺点是社区支持不足,很多问题只有官方文档的例子,很难找到答案。