项目上线的“最后一公里”——部署与监控

愿天堂没有BUG

共 2099字,需浏览 5分钟

 ·

2023-08-10 02:16

恭喜你!掌握了前面章节讲解的知识,你已经具备了独立开发一个中小型系统的能力。但是先不要着急,我们还差最后一步,才能让开发的应用投入使用,那就是部署。

在Spring Boot出现之前,部署通常会先将打好的War包放到Tomcat(或其他Web容器)的Webapps目录下,然后启动Tomcat。你可能还记得在本书第3章中,我们选择的打包方式是Jar而不是War。那么,Jar格式的工程如何启动呢?接下来我们就来揭开谜底,并对比War和Jar的异同点。

部署

Spring Boot推荐我们使用Jar的方式打包和运行工程(也是默认方式)。

通过这段时间对Spring Boot的了解,我们已经发现了一个规律——采用Spring Boot推荐的方式(约定优于配置)通常都非常简单(基本上不需要做额外的工作)。当然,Spring Boot也会给我们自定义的自由,只需要做一些额外的配置即可。

Jar

在采用Jar的方式打包应用时,我们不需要做任何额外的工作,只需要按部就班地使用Maven打包即可。执行完打包命令,target目录下就会生成一个Jar文件,如hello-0.0.1-SNAPSHOT.jar,然后使用java-jar命令启动即可。打开系统命令行工具,将路径切换到Jar文件所在的目录:

接下来就可以看到熟悉的启动日志了,并且待应用启动完成后,就可以访问我们写的接口了,很简单。

War

Spring Boot之所以令人喜爱,是因为它除了为我们做了很多自动配置,还能够让我们非常方便地使用自定义配置。

下面我们就通过自定义配置,将Spring Boot工程以传统的War方式进行打包。只需要修改项目主类(SpringbootApplication)和pom文件即可。

修改项目主类

接下来使用Maven打包,并在打包完成后将War文件复制到Tomcat的Webapps目录下,最后运行startup脚本(Tomcat的启动脚本在bin目录下)。

DevTools

DevTools是Spring Boot 1.3引入的一组开发者工具,目的是提高开发效率。其中一个很重要的功能是,在代码被修改后会自动重启应用。就这样?比自己手动重启也强不了多少呀!如果只是将原来的手动重启变成了自动重启,那真的没什么。

自动重启优势所在

为了提升重启的速度,Spring Boot将资源分成了两类:一类是不变对象(如项目依赖的Jar包);另一类是可变对象(如应用中的类或资源文件)。

基础类加载器用来加载不变对象;重启类加载器用来加载可变对象。

那么,在重启时就可以只加载可变对象了。这样一来,启动速度势必会比加载所有资源的方式更快。理论上讲,项目依赖的第三方资源越多(项目越大),这种机制的优势就越明显。

添加依赖

引入DevTools依赖:

设置IDE

要想使用Spring Boot的自动重启功能,需要对IDE进行一些设置。以Intellij IDEA为例,我们需要开启自动构建和自动编译。

开启自动构建

选 择 file→Settings 菜 单 命 令 ( 在 Mac 系 统 中 : 选 择 IntellijIDEA→Preferences菜单命令),打开Settings对话框,选择Compiler选项,并勾选Build project automatically复选框,开启自动构建,如图14-1所示。

408打开Settings对话框的快捷键如下。

· Windows系统:Ctrl+Alt+S

· Mac系统:Command+,

Build project automatically 复 选 框 后 面 有 一 行 小 字 : only workswhile not running/debugging。勾选该复选框后,系统告诉我只能在非运行(调试)状态下起作用。Intellij IDEA,你是在逗我吗?我要的是在运行时起作用呀!所以,我们还需要做一个设置。

开启自动编译

409选择Help→Find Action→Registry菜单命令,查找设置项,如图14-2所示。

快捷键如下。

· Windows系统:Ctrl+Alt+Shift+/

· Mac系统:Command+Option+Shift+/

勾选compiler.automake.allow.when.app.running复选框,如图14-3所示。

可以看到,这个选项允许应用在运行时进行自动编译。

经过以上步骤,在修改完类或application.yml文件后,应用就可以自动重启了。

自定义规则

如果你想要定制自动重启功能,可以通过以下配置项来实现:

本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。


浏览 50
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报