zoukankan      html  css  js  c++  java
  • springboot学习(八)热部署和打包

    热部署

    Spring Boot提供了一个开发者工具,可以监控classpath路径上的文件。只要源码或配置文件发生修改,Spring Boot应用可以自动重启,添加依赖

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

    在Intellij Idea下,还需要手动进行一些设置。首先到Files→Settings→Compiler,将Build project automatically一项勾选.

    连击两次Shift键,输入Registry后找到Registry...回车,直接输入running找到complier.automake.allow.when.app.running并勾选即可,最后重启一下项目,之后对项目代码的任何更改都将被侦知并自动重新加载,无需手动重启项目

    Spring Boot 中热部署最最关键的原理就是两个不同的 classloader:

    • base classloader

    • restart classloader

    其中 base classloader 用来加载那些不会变化的类,例如各种第三方依赖,而 restart classloader 则用来加载那些会发生变化的类,例如你自己写的代码。Spring Boot 中热部署的原理就是当代码发生变化时,base classloader 不变,而 restart classloader 则会被废弃,被另一个新的 restart classloader 代替。在整个过程中,因为只重新加载了变化的类,所以启动速度要被重启快。

    但是使用 devtools ,默认情况下当静态资源发生变化时,并不会触发项目重启。

    打包

    Spring Boot自带一个spring-boot-maven-plugin插件用来打包,我们只需要在pom.xml中加入以下配置

        <build>
           <plugins>
               <plugin>
                   <groupId>org.springframework.boot</groupId>
                   <artifactId>spring-boot-maven-plugin</artifactId>
               </plugin>
           </plugins>
       </build>

    无需任何配置,Spring Boot的这款插件会自动定位应用程序的入口Class,执行Maven命令即可打包,会生成两个文件:

    • .jar.original,是Maven标准打包插件打的jar包,它只包含我们自己的Class文件,不包含依赖

    • .jar,是Spring Boot打包插件创建的,包含依赖的jar和class文件,可以直接运行 java -jar xxx.jar

     

     

  • 相关阅读:
    转:IPhone之ASIFormDataRequest POST操作架构设计/ 处理网络超时问题
    LLDB和GDB比较
    为线程设置一个名字 [mythread setName:@"第一个子线程"];
    杀死一个线程
    ios 开发框架原始雏形 01
    iOS开发:设置应用程序图标和引导画面
    一个奇怪的现象 在GDB模式和LLDB 模式下 同样代码不同反应 AudioServicesCreateSystemSoundID
    iOS中GCD的魔力
    提升app 应用程序运行速度的几个常用方法
    IOS开发缓存机制之—本地缓存机制
  • 原文地址:https://www.cnblogs.com/yjh1995/p/14164448.html
Copyright © 2011-2022 走看看