iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >怎么部署Spring-Boot-Devtools
  • 190
分享到

怎么部署Spring-Boot-Devtools

2024-04-02 19:04:59 190人浏览 八月长安
摘要

这篇文章主要介绍“怎么部署spring-Boot-Devtools”,在日常操作中,相信很多人在怎么部署Spring-Boot-Devtools问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,

这篇文章主要介绍“怎么部署spring-Boot-Devtools”,在日常操作中,相信很多人在怎么部署Spring-Boot-Devtools问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么部署Spring-Boot-Devtools”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

spring-boot-devtools

SpringBoot,StringBuilder,StringBuffer,俗称Java界的3个SB。尤其是SpringBoot,非常的好用,主要归功于它的autoconfig,靠约定来规范开发

但问题是,SpringBoot加载的jar包太多、太大了,每次启动都要花费很长时间。对于SpringBoot服务来说,spring-boot-devtools就像一阵及时雨,滋润着瞪眼发呆盯着重启屏幕的同学。

虽然这个东西已经出来很长时间了,但我发现在现实项目中,大家用到的还是比较少。但它的使用非常简单。

只需要在项目的pom文件中,加入下面的jar包即可获取秒级的服务重载(热部署)。

<dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-devtools</artifactId>     <scope>runtime</scope>     <optional>true</optional> </dependency>

由于starter文件中默认的值就是true,所以下面yml中的配置,并不是必须的。

spring:   devtools:     restart:       enabled: true

我们来验证一下。来的很快。

新建一个简单的controller,输出halloworld。

@Controller public class DemoController {     @GetMapping("/test")     @ResponseBody     public String test(){         return "halloworld";     } }

修改代码,把hallo改成hello。控制台中将开始滚动输出日志,加载项目代码。此时访问浏览器,发现我们的改动生效了。

# 日志显示 Started MbyeApplication in 1.731 seconds (JVM running for 51.115)

控制台也输出了本次restart的时间,只花了不到2秒钟,可以说是飞快了。

为了在代码修改后,能够实时的触发编译,你需要在idea中做如下配置。如果这个配置不生效,就需要手动点击一下Build了(注意不是rebuild)。

怎么部署Spring-Boot-Devtools

为什么热部署的重新加载能够这么快呢?因为它的重新启动并不是完整的重启整个应用,而是只重启我们的应用代码。

通过配置META-INF/spring-devtools.properties文件,可以指定每次重新启动都加载第三方jar包。不过这种场景比较少。当然,有include,旧有exclude,示例如下。

restart.exclude.somejar=/somejar-[\\w-]+\.jar restart.include.ajar=/ajar-[\\w-]+\.jar

注意到一件有意思的事情。当我们使用IDEA启动的时候,控制台的输出是这样的。

2020-09-18 21:33:59.495  INFO 4635 --- [  restartedMain] c.g.javarunfast.mbye.MbyeApplication     : Starting MbyeApplication on LYCYs-MacBook-Pro.local with PID 4635 (/target/classes started by xjjdog in /Users/xjjdog/codes/javarunfast/mbye) 2020-09-18 21:33:59.495  INFO 4635 --- [  restartedMain] c.g.javarunfast.mbye.MbyeApplication     : No active profile set, falling back to default profiles: default 2020-09-18 21:34:00.355  INFO 4635 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode! 2020-09-18 21:34:00.355  INFO 4635 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data elasticsearch repositories in DEFAULT mode. 2020-09-18 21:34:00.357  INFO 4635 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 1ms. Found 0 Elasticsearch repository interfaces. 2020-09-18 21:34:00.362  INFO 4635 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode! 2020-09-18 21:34:00.362  INFO 4635 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.

里面的启动线程是restartedMain。但当我们使用java -jar  *jar来启动的时候,主进程并不是restartedMain,而是main。

这是因为,线上环境开启devtools,是没有意义的。

这句话暂时这么说,因为会打脸。

更多功能

要想了解devtools有什么功能,我们先来看一下它的源码目录结构。

怎么部署Spring-Boot-Devtools

filewatch和classpath就不必说了,通过监听文件的变化,即可实现热启动。它原理上是使用一个独立的ClassLoader(具体是指RestartClassLoader),来完成加载后的替换。

学习一下这部分的代码,可以对Java的类加载器有更好的理解。

LiveReload

接下来就是livereload功能。

LiveReload在做前端开发的时候,经常会用到。

devtools也会在后台开启一个LiveReload  Server,浏览器会与这个Server保持着一个长连接,当后端前端资源变动的时候,将会通知浏览器进行刷新,实现热部署。

下面是Chrome的Remote Live Reload插件地址。安装即可拥有这个酷炫的功能。

https://chrome.Google.com/WEBstore/detail/remotelivereload/jlppknnillhjgiengoigajegdpieppei?hl=en-GB

怎么部署Spring-Boot-Devtools

远程部署

这个就有意思多了。我们上面说到,线上环境开启devtools,是没有意义的,现在来打脸。

你可能自己的机器性能比较低,让代码运行在远端,本地只管代码开发。这时候,就可以使用远程热部署。

要开启这个功能,需要做的步骤有点多。

步骤一。

需要在pom.xml中对spring-boot-Maven-plugin做如下的更改。

<plugin>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-maven-plugin</artifactId>     <configuration>         <excludeDevtools>false</excludeDevtools>     </configuration> </plugin>

步骤二。

在yml中设置一个服务端与调试端连接的密钥。

spring:   devtools:     remote:       secret: test

步骤三。

将SB服务打包成jar,然后启动。

mvn -Dmaven.test.skip=true -Pdev package  java -jar -Xdebug  \ -Xrunjdwp:server=y,transport=dt_Socket,suspend=n  \ mbye-0.0.1-SNAPSHOT.jar

可以看到我们在启动的时候加入了很多参数,这就是开启远程被调戏的意思。

步骤四。

在本地IDEA中编辑一个Java文件,并在启动变量里塞进我们的服务端地址(和应用地址一样)。

import org.springframework.boot.devtools.RemoteSpringApplication;   public class Remote {     public static void main(String[] args) {         RemoteSpringApplication.main(new String[]{"Http://localhost:8080"});     } }

步骤五。

进行验证。随便编辑一个能看到效果的文件,然后点击build。

下面是IDEA开发端的截图。

怎么部署Spring-Boot-Devtools

下面是服务端截图。可以看到服务已经重新载入了,不过速度特别快。

怎么部署Spring-Boot-Devtools

Listening for remote restart updates on /.~~spring-boot!~/restart Started MbyeApplication in 1.961 seconds (JVM running for 249.452)

访问web页面,发现代码已经上传成功了。

其实,spring-boot-devtools,还不算是最强大的。因为它每次都会使用ClassLoader重新载入项目的class文件。如果你的项目文件特别多,那也是比较慢的。

到此,关于“怎么部署Spring-Boot-Devtools”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么部署Spring-Boot-Devtools

本文链接: https://www.lsjlt.com/news/84608.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么部署Spring-Boot-Devtools
    这篇文章主要介绍“怎么部署Spring-Boot-Devtools”,在日常操作中,相信很多人在怎么部署Spring-Boot-Devtools问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • 怎么对Spring boot 进行部署
    怎么对Spring boot 进行部署?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。String boot 部署SpringBoot部署也是非常简单,首先,需要...
    99+
    2023-05-31
    springboot spring boo bo
  • 部署Spring Boot项目
    上传jar包 之前在新建Spring Boot项目[1]使用mvn install的方式,已经构建出jar包。 通过scp或rz/sz,将该jar包上传到服务器 执行java -jar hello-0.0....
    99+
    2023-08-30
    后端
  • 怎么在spring boot中部署jar包
    本篇文章为大家展示了怎么在spring boot中部署jar包,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。部署为可运行的jarspring boot已经尽可能把需要配置的东西自动化了,我还傻傻的像...
    99+
    2023-05-30
    springboot jar
  • 怎么用Docker部署Spring Boot项目
    本篇内容介绍了“怎么用Docker部署Spring Boot项目”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Docker 技术发展为微服务...
    99+
    2023-06-04
  • 使用Spring boot怎么打包部署应用
    今天就跟大家聊聊有关使用Spring boot怎么打包部署应用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、Spring Boot内置webSpring Boot 其默认是集成w...
    99+
    2023-05-30
    springboot
  • 怎么在Jenkins中部署一个Spring Boot项目
    这篇文章给大家介绍怎么在Jenkins中部署一个Spring Boot项目,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。jenkins搭建 部署分为三个步骤;第一步,jenkins安装第二步,插件安装和配置第三步,Pu...
    99+
    2023-05-30
    jenkins springboot
  • 怎么使用docker部署spring boot并接入skywalking
    小编给大家分享一下怎么使用docker部署spring boot并接入skywalking,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、概述最近在研究skyw...
    99+
    2023-06-14
  • Docker如何部署Spring-boot项目
    这篇文章主要介绍了Docker如何部署Spring-boot项目的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker如何部署Spring-boot项目文章都会有所收获,下...
    99+
    2024-04-02
  • spring boot部署方式有哪些
    这篇文章将为大家详细讲解有关spring boot部署方式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  在使用assembly来打包springboot微服务项目前,我想说一说,目前s...
    99+
    2023-05-30
    spring boot
  • Spring Boot DevTools全局配置的方法
    这篇文章主要讲解了“Spring Boot DevTools全局配置的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Boot Dev...
    99+
    2023-06-29
  • 怎么利用脚本部署一个Spring Boot应用
    这篇文章给大家介绍怎么利用脚本部署一个Spring Boot应用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。部署方法如下:在 pom.xml 路径下新建文件 start.sh#!/bin/bash#0、删除原有的日志...
    99+
    2023-05-31
    springboot spring boo
  • Spring Boot DevTools 全局配置学习指南
    目录 一、直接重启项目与devtools重启的区别 二、DevTools配置 三、DevTools全局配置 四、trigger-file控制重启行为 4.1、配置 4.2、新建文件....
    99+
    2024-04-02
  • springboot + devtools(热部署)实例教程
    技术介绍devtools:是boot的一个热部署工具,当我们修改了classpath下的文件(包括类文件、属性文件、页面等)时,会重新启动应用(由于其采用的双类加载器机制,这个启动会非常快,如果发现这个启动比较慢,可以选择使用jrebel)...
    99+
    2023-05-31
    spring boot 热部署
  • 为什么无法在IDEA中使用Spring-boot-devTools
    本篇文章为大家展示了为什么无法在IDEA中使用Spring-boot-devTools,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。相信大部分使用Intellij的同学都会遇到这个问题,即使项目使用...
    99+
    2023-05-31
    idea spring-boot-devtools
  • 怎么使用Spring Boot+gRPC构建微服务并部署
    这篇文章主要介绍“怎么使用Spring Boot+gRPC构建微服务并部署”,在日常操作中,相信很多人在怎么使用Spring Boot+gRPC构建微服务并部署问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2023-07-02
  • 利用Spring Boot 怎么部署一个微服务项目
    这篇文章将为大家详细讲解有关利用Spring Boot 怎么部署一个微服务项目,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。如果开发过spring boot的程序,应该都知道,使用sprin...
    99+
    2023-05-31
    springboot spring boo
  • 如何对Spring Boot与Docker进行部署
    这篇文章给大家介绍如何对Spring Boot与Docker进行部署,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。开启Docker远程访问首先需要开启docker远程访问功能,以便可以进行远程操作。CentOS 6修改...
    99+
    2023-05-31
    springboot dock docker
  • 如何使用Docker部署Spring Boot开源
    这篇文章给大家介绍如何使用Docker部署Spring Boot开源,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。云收藏项目已经开源2年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时很新的...
    99+
    2023-06-19
  • 如何使用Docker部署Spring Boot项目
    这篇文章主要介绍如何使用Docker部署Spring Boot项目,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!创建一个简单的springboot项目一、在 pom.xml 中 ,使用 Spring Boo...
    99+
    2023-06-22
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作