一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情。
前言
本文的一些案例都是基于SpringBoot2.6.6版本实现。IDEA创建SpringBoot应用,一些常用的开发者工具。
Devloper Tools
1. Spring Native
传统的Spring项目都是依赖JVM实现的,Spring Native 的诞生就是无需 JVM,它提供了另外一种运行和部署 Spring 应用的方式(目前只支持 Java 和 Kotlin),通过 GraalVM 将 Spring 应用程序编译成原生镜像。
1.1、 Spring Native 特点
- 无需 JVM 环境, Spring Native 应用程序可以作为一个可执行文件独立部署;
- 应用即时启动,一般情况下应用启动时间 < 100ms;
- 即时的峰值性能;
- 更少的内存消耗;
1.2、Spring Native 缺点
Spring Native 应用启动那么快也是有代价的,和 JVM 应用相比:
- 构建更笨重、构建时间更长;
- 更少的运行时优化;
- 很多 Java 功能受限;
- 很多特性还很不成熟;
1.3、Spring Native 应用场景
- Spring Cloud 无服务器化(Serverless);
- 以更廉价持久的方式运行 Spring 微服务;
- 非常适合 Kubernetes 平台,如:VMware Tanzu;
- 为 Spring 应用创建更佳的容器镜像;
1.4、Spring Native 和 JVM 的区别
常规 JVM 和本机映像平台之间的主要区别是:
- 在构建时从主入口点对您的应用程序进行静态分析。
- 未使用的部分在构建时被删除。
- 反射、资源和动态代理需要配置。
- 类路径在构建时是固定的。
- 无类延迟加载:可执行文件中的所有内容都将在启动时加载到内存中。
- 一些代码将在构建时运行。
- Java 应用程序的某些方面存在一些不完全支持的限制。 该项目的目标是孵化对 Spring Native(Spring JVM 的替代方案)的支持,并提供旨在打包在轻量级容器中的原生部署选项。实际上,目标是在这个新平台上支持几乎未修改的 Spring 应用程序。
1.5 快速开始,基于SpringBoot构建Native应用
构建 Spring Boot 原生应用程序有两种主要方法:
- 使用Spring Boot Buildpacks 支持生成包含本机可执行文件的轻量级容器。
- 使用本机构建工具生成本机可执行文件。
- 安装 GraalVM
2.
Spring Native 0.11.4 仅支持 Spring Boot 2.6.6,因此如有必要请更改版本
<spring-native.version>0.11.4</spring-native.version>
<dependency>
<groupId>org.springframework.experimental</groupId>
<artifactId>spring-native</artifactId>
<version>${spring-native.version}</version>
</dependency>
2. Spring Boot DevTools
3. lombok
lombok可以通过简单的注解的形式来帮助我们简化和消除一些必须有但显得很臃肿的Java代码,比如常见的Getter&Setter、toString()、构造函数等等。lombok不仅方便编写,同时也让我们的代码更简洁。
4. Spring Configuration Processor
Spring Configuration Processor 顾名思义,处理Spring 配置文件的处理器,以一种更优雅的方式处理Spring的配置文件。