zoukankan      html  css  js  c++  java
  • 三、springboot热部署

    1.spring-boot-devtools 实现热部署

    spring-boot-devtools 最重要的功能就是热部署。它会监听 classpath 下的文件变动,并且会立即重启应用。

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

      optional=true 表示依赖不会传递,换句话说,其他依赖该项目的项目,如果想要使用 devtools,需要重新引入

      如果,希望指定文件夹下的文件改变的时候,重新启动 Spring Boot,我们只要在 src/main/resources/application.properties 中配置信息。

    spring.devtools.restart.additional-paths= # Additional paths to watch for changes.

    自定义配置热部署

      以下配置用于自定义配置热部署,可以不设置。

    # 热部署开关,false即不启用热部署
    spring.devtools.restart.enabled: true
    
    # 指定热部署的目录
    #spring.devtools.restart.additional-paths: src/main/java
    
    # 指定目录不更新
    spring.devtools.restart.exclude: test/**

    如果是Intellij Idea,需要改以下两个地方:

    1、勾上自动编译或者手动重新编译

    File > Settings > Compiler-Build Project automatically

    2、注册

    ctrl + shift + alt + / > Registry > 勾选Compiler autoMake allow when app running

    注意事项

    1、生产环境devtools将被禁用,如java -jar方式或者自定义的类加载器等都会识别为生产环境。

    2、打包应用默认不会包含devtools,除非你禁用SpringBoot Maven插件的 excludeDevtools属性。

    3、Thymeleaf无需配置 spring.thymeleaf.cache:false,devtools默认会自动设置,参考完整属性。

    https://github.com/spring-projects/spring-boot/blob/v1.5.7.RELEASE/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/env/DevToolsPropertyDefaultsPostProcessor.java

    4、devtools会在windows资源管理器占用java进程,在开发工具里面杀不掉,只能手动kill掉,不然重启会选成端口重复绑定报错。

    2.Spring Loaded 实现热部署

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>springloaded</artifactId>
                <version>1.2.6.RELEASE</version>
            </dependency>
        </dependencies>
    </plugin>

    使用 mvn spring-boot:run 启动项目。

    3.模板文件热部署

    在 Spring Boot,模板引擎的页面默认是开启缓存,如果修改页面内容,刷新页面是无法获取修改后的页面内容,所以,如果我们不需要模板引擎的缓存,可以进行关闭。

    spring.freemarker.cache=false
    spring.thymeleaf.cache=false
    spring.velocity.cache=false

    官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html

  • 相关阅读:
    java陷阱一箩筐面试
    应用MVC设计模式解决J2ME应用程序导航问题 mingjava
    我怎么了
    运营商掘宝手机游戏 无限“钱途”引人竞折腰
    网络工程师考试大纲
    java 正则
    java集合使用——LinkedList
    java集合使用——HashMap
    java集合使用——HashSet
    JAVA集合使用——基本概念
  • 原文地址:https://www.cnblogs.com/soul-wonder/p/8968369.html
Copyright © 2011-2022 走看看