idea创建包怎么让包分层_Spring Boot 2.3 支持分层 Jar包、优雅停机、完美支持 Docker/k8s 了,赶紧跟我一起来尝鲜儿...

我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 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 插件。

此插件不仅提供了打镜像包的功能,还有其他的常用功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值