精华内容
下载资源
问答
  • 热部署

    2020-06-08 10:47:25
    (2)热部署 ​ 在开发过程中,通常会对一段业务代码不断地修改测试,在修改之后往往需要重启服务,有些服务需要加载很久才能启动成功,这种不必要的重复操作极大的降低了程序开发效率。为此,Spring Boot框架专门...

    (2)热部署
    ​ 在开发过程中,通常会对一段业务代码不断地修改测试,在修改之后往往需要重启服务,有些服务需要加载很久才能启动成功,这种不必要的重复操作极大的降低了程序开发效率。为此,Spring Boot框架专门提供了进行热部署的依赖启动器,用于进行项目热部署,而无需手动重启项目
    演示:
    1.添加spring-boot-devtools热部署依赖启动器**
    在Spring Boot项目进行热部署测试之前,需要先在项目的pom.xml文件中添加spring-boot-devtools热部署依赖启动器:
    xml

    org.springframework.boot spring-boot-devtools ​ 由于使用的是IDEA开发工具,添加热部署依赖后可能没有任何效果,接下来还需要针对IDEA开发工具进行热部署相关的功能设置 IDEA工具热部署设置 ​ 选择IDEA工具界面的【File】->【Settings】选项,打开Compiler面板设置页面 image-20191225140602409

    选择Build下的Compiler选项,在右侧勾选“Build project automatically”选项将项目设置为自动编译,单击【Apply】→【OK】按钮保存设置
    ​ 在项目任意页面中使用组合快捷键“Ctrl+Shift+Alt+/”打开Maintenance选项框,选中并打开Registry页面,具体如图1-17所示

    image-20191225141511157

    列表中找到“compiler.automake.allow.when.app.running”,将该选项后的Value值勾选,用于指定IDEA工具在程序运行过程中自动编译,最后单击【Close】按钮完成设置

    3.热部署效果测试
    启动chapter01http://localhost:8080/hello
    image-20191225141703420
    页面原始输出的内容是“hello Spring Boot”。
    为了测试配置的热部署是否有效,接下来,在不关闭当前项目的情况下,将DemoController 类中的请求处理方法hello()的返回值修改为“你好,Spring Boot”并保存,查看控制台信息会发现项目能够自动构建和编译,说明项目热部署生效
    image-20191225141854983
    可以看出,浏览器输出了“你好,Spring Boot”,说明项目热部署配置成功
    学习让人快乐,学习更让人觉得无知!学了1个多月的《Java工程师高薪训练营》,才发现自己对每个技术点的认知都很肤浅,根本深不下去,立个Flag:每天坚持学习一小时,一周回答网上3个技术问题,把自己知道都分享出来。

    展开全文
  • Idea配置热部署

    万次阅读 多人点赞 2019-08-17 16:23:13
    Idea配置热部署 一、概念 热部署就是正在运行状态的应用,修改了他的源码之后,在不重新启动的情况下能够自动把增量内容编译并部署到服务器上,使得修改立即生效。热部署为了解决的问题有两个, 一是在开发的时候...

    Idea配置热部署

    一、概念

    热部署就是正在运行状态的应用,修改了他的源码之后,在不重新启动的情况下能够自动把增量内容编译并部署到服务器上,使得修改立即生效。热部署为了解决的问题有两个, 一是在开发的时候,修改代码后不需要重启应用就能看到效果,大大提升开发效率;二是生产上运行的程序,可以在不停止运行的情况下进行升级,不影响用户使用。

     

    二、Idea开启热部署

    本篇文章主要是介绍Idea这款开发工具的热部署,而用Idea的人大多数都是用来开发java程序,当前流行的java程序主要有两种,第一种是传统的Web应用,依赖Tomcat这种web容器运行;第二种是Spring boot程序, 内嵌了运行环境。

     

    2.1 Tomcat热部署

    a). 在顶部找到程序运行操作栏, 点击Edit Configurations

    b). 点击你要配置的tomcat,点击deployment,点击”+“

     

    c). 然后选择你要部署的war包,热部署必须要选择带有exploded的war包

     

    d). 再切换回Server,按照下图标注配置

     

    配置完后点击ok即可启动你的tomcat,然后改一下jsp、java文件实验热部署配置是否成功。

    最后提示一下,Idea热部署并非绝对实时, 还是会有延时的,假如你手速快的话可能会出现改了并没有马上生效。所以此时不要怀疑热部署没有配置成功,稍微等一会你会看到开发工具左下角会有一个class reload的提示,出现这个提示才说明已经热部署完成了。

     

    当然, 如果你想马上生效的话,可以点击下图标标注的按钮,或者使用快捷键Ctrl + F10

     

    2.2 Spring boot程序热部署

     

    a). 在顶部找到程序运行操作栏, 点击Edit Configurations,点击要配置的程序,按照下图标注地方配置

     

    配置完后点击ok即可启动你的程序,java文件实验热部署配置是否成功。

     

    但配置到这里只是会使java文件和其他静态资源热部署成功,但如果您的Spring boot程序是web程序,并且有jsp或Thymeleaf等页面模板引擎,则还需要在Spring boot的配置文件中配置。

     

    如果是jsp, 在application.yml文件下加入配置

     

    如果是Thymeleaf, 则在application.yml文件加入spring:thymeleaf:cache: false 配置

    Spring boot程序除了通过上述步奏实现热部署,还可以通过给程序添加spring-boot-devtools依赖实现。

    <!-- 热部署 --> 
    <dependency> 
        
        <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId> 
        <version>2.0.4.RELEASE</version> 
        
        <!-- 启用 --> 
        <optional>true</optional> 
    </dependency>

     

    三、其他配置

     

    如果你通过上面的步骤还没实现想要的热部署效果,可以继续做以下两个配置

     

    3.1 开启Java Compiler的自动build

     

    3.2 按住ctrl + shift +alt + / 选择Registry,按照下图标注配置

     

    PS:

    • 本文属于本人原创文章,转载请注明出处,如果你觉得这篇文章对你有帮助或启发,也可以来请我喝咖啡。
    • 利益相关:本篇文章所有提到的商业品牌或网站链接均为笔者随意想到的或日常使用的,无任何广告费用。

     

    展开全文
  • springboot实现热部署

    万次阅读 多人点赞 2019-03-20 19:34:15
    文章目录前言原理方式开始配置在pom.xml中添加依赖devtools的配置IDEA中配置测试参考资料&...在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,...

    1. 前言

    在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受啊。在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。下面我=我们就看看对于简单的类修改的热部署怎么实现。

    2. 原理

    深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。
    若想探究底层实现或者自定义加载类,可以参考大佬博客

    3. 方式

    springboot有3中热部署方式:

    • 1.使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动

    • 2.使用springloaded本地加载启动,配置jvm参数

    -javaagent:<jar包地址> -noverify

    • 3.使用devtools工具包,操作简单,但是每次需要重新部署

    这里主要讲解一下第三种热部署方式的使用,因为在网上查找资源时,总会发现很多人就是springloaded和devtools都使用了,其实是多余的操作,而且第三种操作简单快捷。

    4. 开始配置

    4.1 在pom.xml中添加依赖

        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--devtools热部署-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
                <scope>true</scope>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <fork>true</fork>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    

    注:

    • (1) devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现),
      实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。
      即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的
    • (2)配置了true后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空session中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。

    默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。

    4.2 devtools的配置

    在application.yml中配置一下devtools

    spring:
      devtools:
        restart:
          enabled: true  #设置开启热部署
          additional-paths: src/main/java #重启目录
          exclude: WEB-INF/**
      freemarker:
        cache: false    #页面不加载缓存,修改即时生效
    

    4.3 IDEA中配置

    当我们修改了类文件后,idea不会自动编译,得修改idea设置。

    • (1)File-Settings-Compiler-Build Project automatically
    • (2)ctrl + shift + alt + / ,选择Registry,勾上 Compiler autoMake allow when app running

    4.4 测试

    • 修改类–>保存:应用会重启
    • 修改配置文件–>保存:应用会重启
    • 修改页面–>保存:应用不会重启,但会重新加载,页面会刷新

    5. 参考资料&小结

    小结

    热部署有三种方式,我被网上的各种博客搞得晕头转向的,本来不是个难问题,越看越复杂。最近有点自闭,对于敲代码这件事来说,我不知道我到底喜不喜欢,还是只是单纯为了找工作,我看着别人敲的代码,感觉自己与别人差距还很大,我觉得自己非常菜,我不知道我要是以后固定的工作,固定的敲代码,会不会还有进步。自闭中。。。

    参考资料

    其他两种热部署方式请参考最后一个链接

    展开全文
  • 获得技能掌握SpringBoot热部署技能本节对应教学视频 SpringBoot从入门到精通 SSM/MyBatis/Redis/KafKa/SpringCloud​ke.qq.com知识要点增加spring-boot-devtools依赖打开热部署热部署原理:动态ClassLoader通过配置...

    获得技能

    掌握SpringBoot热部署技能

    本节对应教学视频

    SpringBoot从入门到精通 SSM/MyBatis/Redis/KafKa/SpringCloudke.qq.com
    ac3c62ba4c9fffcb1ee92fa4bc398964.png

    知识要点

    • 增加spring-boot-devtools依赖打开热部署
    • 热部署原理:动态ClassLoader
    • 通过配置打开和关闭热部署

    通过重新编译的方式完成SpringBoot项目重启,热部署可以快速重启项目,一般只用在开发环境,生产环境不要使用。

    图解热部署原理

    SpringBoot项目将系统的类拆分到两个ClassLoader。

    • 静态ClassLoader
    • 动态ClassLoader
      使用静态ClassLoader和动态ClassLoader隔离的加载方式。热部署的时候,静态类加载器保持不变,仅仅让动态类加载器加载所需要的类,加快JVM类的加载速度

    26df7cf0a823bf83d2f1e30b0910d24b.png
    参考资料 官方文档
    The restart technology provided by Spring Boot works by using two classloaders. Classes that do not change (for example, those from third-party jars) are loaded into a base classloader. Classes that you are actively developing are loaded into a restart classloader. When the application is restarted, the restart classloader is thrown away and a new one is created. This approach means that application restarts are typically much faster than “cold starts”, since the base classloader is already available and populated.
    If you find that restarts are not quick enough for your applications or you encounter classloading issues, you could consider reloading technologies such as JRebel from ZeroTurnaround. These work by rewriting classes as they are loaded to make them more amenable to reloading.

    上机实验

    1. 实验: 打开热部署
    • 增加spring-boot-devtools依赖打开热部署
    • 打开热部署配置 【可选项,系统已经默认打开】

    实验: 关闭热部署

      • 关闭热部署配置

    增加spring-boot-devtools依赖打开热部署

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

    打开热部署配置

    spring.devtools.restart.enabled: true

    关闭热部署配置

    # 关闭热部署
    spring.devtools.restart.enabled: false
    展开全文
  • Intellij热部署插件JRebel

    万次阅读 多人点赞 2018-08-30 23:15:48
    Intellij热部署插件JRebel 安装JRebel 激活JRebel 相关设置 Intellij热部署插件JRebel 项目需求,一直用eclipse的我,也要改用IDEA了,一开始,很不习惯。经过几天的慢慢摸索和习惯之后,发现IDEA确实很好用。...
  • 薯条 SpringBoot 在IDEA中实现热部署 (JRebel实用版)

    万次阅读 多人点赞 2019-07-08 20:41:42
    热部署只是针对class文件,源文件这些。对于属性文件.xml或.properties,只要修改了,都需要重启服务器,因为属性文件是在服务器启动的时候加载的,不可能被热部署识别到。 下载并安装 Jrebel 实例服务地址:...
  • 获得技能掌握SpringBoot热部署技能本节对应教学视频 SpringBoot从入门到精通 SSM/MyBatis/Redis/KafKa/SpringCloud​ke.qq.com知识要点增加spring-boot-devtools依赖打开热部署热部署原理:动态ClassLoader通过配置...
  • SpringBoot 热部署jsp 页面热部署springboot 中 devtools 热部署 jsp 页面热部署 在 springboot 中默认对 jsp 运行为生产模式,不允许修改内容保存后立即生效,因此在开发过程需要调试 jsp 页面每次需要重新启动...
  • springboot的热部署使用场景: 1.本地调试 2.线上发布 银行和金融交易类的网站,需要全年不间断的运行. 优点: 1.无论本地还是在线上,都适用. 2.无需重新启动.java热部署和热加载联系: 1.不重启服务器编译/部署...
  • 热部署SpringBoot热部署 SpringBoot热部署学习网址:https://www.imooc.com/video/16054 在开发过程中,我们往往会用到各种框架来提高我们的开发的效率,而SpringBoot则是现今很火的一个微服务架构。其设计的目的...
  • IDEA配置热部署

    2017-11-08 10:02:41
    IDEA配置热部署IDEA配置热部署IDEA配置热部署IDEA配置热部署
  • Tomcat实现热部署

    2021-01-10 06:50:48
    热部署概念 热部署是指在你对JSP或JAVA类进行了修改在不重启WEB服务器前提下能让修改生效,配置文件的修改除外 热部署好处 每次打增量包的时候就不用重新启动tomcat了 实现方式 在tomcat\conf\server.xml中的<host>...
  • 热加载和热部署

    2021-04-19 00:37:03
    一 什么是热加载和热部署 1.1 热部署(Hot Deploy) 1.2 热加载(Hot Swap) 二 热加载的原理是什么 2.1 检测哪些文件需要重新被加载 2.2 怎么加载 三 热部署的原理是什么 四 区别 一 什么是热加载和热部署 1.1...
  • Spring Boot怎么实现热部署在Spring Boot实现代码热部署是一件很简单的事情,代码的修改可以自动部署并重新热启动项目。1、引用devtools依赖org.springframework.bootspring-boot-devtoolstrue这样,当修改一个java...
  • 在Spring Boot实现代码热部署是一件很简单的事情,代码的修改可以自动部署并重新热启动项目。引用devtools依赖org.springframework.bootspring-boot-devtoolstrue这样,当修改一个java类时就会热更新。自定义配置...
  • 简述本文主要介绍springboot如何实现热部署热部署热部署就是当应用程序正在运行的时候升级软件或修改某一部分代码、配置文件时,无需重新启动应用,即可使升级的软件和修改后的代码、配置文件生效。原理使用两个...
  • java热部署与热加载,以及配置tomcat实现热部署的方式 1、热部署与热加载 在应用运行的时候升级软件,无需重新启动的方式有两种,热部署和热加载。 它们之间的区别是: (1)、部署方式:  热部署在服务器运行时...
  • eclipse热部署

    2011-11-03 23:55:14
    eclipse热部署eclipse热部署eclipse热部署

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,356
精华内容 6,942
关键字:

热部署