我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面。
Spring Boot 2.3 已经发布一个月了,这两天才想起来尝一尝鲜儿。除了常规的升级外,很大部分的升级是针对 Docker 的,让你不得不相信,Docker 容器化微服务已然大势所趋。还没有用过的同学,再不下手就晚了。
此次升级主要包括如下几个方面,接下来就跟着我一起来尝一尝吧。
准备工作
为了说明 Spring Boot 2.3 的新特性,必须创建一个项目,以便试验。
创建一个项目并启动
1、创建一个 Spring Boot 项目,可以到 https://start.spring.io/ 上创建,也可以使用 IDEA 自带的功能创建。选择版本 2.3.1,JDK 还是选择亲爱的 Java 8,引入 Web 和 Actuator 两个依赖包。
有一点要注意一下,在我写本文的时候,Spring Boot 2.3.1 还不能从中央仓库下载,需要添加 Spring Boot 官方的里程碑仓库。
spring-milestone
Spring Milestone Repository
https://repo.spring.io/milestone
2、在 pom 文件中引入 Maven 插件
org.springframework.boot
spring-boot-maven-plugin
2.3.1.RELEASE
3、添加一个 Controller,做测试用。
@RestController
public class PlayController {
@GetMapping(value = "play")
public String play(){
return "hey, play with me!";
}
}
4、启动项目
mvn spring-boot:run
5、访问 http://localhost:8080/play,说明项目启动成功
更好的 Docker 支持
如果不使用 Docker 呢,那就直接打成 jar 包,使用如下命令
mvn package spring-boot:repackage
然后就可以把这个 Jar包部署到服务器了,当然这个过程可能是用自动化部署工具实现的,不如 jenkins 或者自研系统。
之前 Docker 打包方式
抛开公司(尤其是大厂)里成熟的自动化部署流程不谈,我这里说的是一般性小厂或者是个人项目。
如果你在之前的版本就已经用 Docker 方式,那基本上都是自己写 Dockerfile ,然后自己写脚本使用 Dockerfile 打镜像包,或者使用 Maven 插件,比如 dockerfile-maven-plugin,我之前写过一篇 Spring Boot 和 Docker 实现微服务部署,就是用的这种方式,可以对比着看一下。
Cloud Native Buildpacks
如果你了解 Dockerfiles 的话,那你肯定了解用 Dockerfiles 构建镜像的过程,需要你创建一个 Dockerfile 文件然后在里面写上构建镜像所需的一系列动作,而 Cloud Native Buildpacks 则无需配置类似的过程文件,很大程度上减轻了开发者的工作,提高了效率。这还不是最重要的,最重要的是它提供了更高层次的抽象能力,使镜像的分层更加清晰,并且合理有效的利用层缓存,这样一来,当我们对应用程序进行修改之后,再次构建镜像时的速度飞快,比如我们的应用只改了几行代码,那当我们使用 Buildpacks 构建镜像时,只需要在应用程序层进行重新构建,其他层使用缓存就可以,也就是只对变化了的层重新构建。
Spring Boot 2.3 Docker 方式
首先要确保你本地已经正常启动了 Docker 服务。
Spring Boot 2.3 官方的 Docker Maven 插件,从此不用再借助第三方了。我们前面创建项目的时候已经引入了这个 Maven 插件。
此插件不仅提供了打镜像包的功能,还有其他的常用功能