Spring Boot实现热部署

在Spring Boot实现代码热部署是一件很简单的事情,代码的修改可以自动部署并重新热启动项目。

引用devtools依赖

1<dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-devtools</artifactId> 4 <optional>true</optional> 5</dependency>

这样,当修改一个java类时就会热更新。

自定义配置热部署

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

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

Intellij Idea修改

如果是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默认会自动设置,点击参考完整属性。

下面是devtools自动配置的部分源码:

1@Order(Ordered.LOWEST_PRECEDENCE) 2public class DevToolsPropertyDefaultsPostProcessor implements EnvironmentPostProcessor { 3 4 private static final Map<String, Object> PROPERTIES; 5 6 static { 7 Map<String, Object> properties = new HashMap<String, Object>(); 8 properties.put("spring.thymeleaf.cache", "false"); 9 properties.put("spring.freemarker.cache", "false"); 10 properties.put("spring.groovy.template.cache", "false"); 11 properties.put("spring.mustache.cache", "false"); 12 properties.put("server.session.persistent", "true"); 13 properties.put("spring.h2.console.enabled", "true"); 14 properties.put("spring.resources.cache-period", "0"); 15 properties.put("spring.resources.chain.cache", "false"); 16 properties.put("spring.template.provider.cache", "false"); 17 properties.put("spring.mvc.log-resolved-exception", "true"); 18 properties.put("server.jsp-servlet.init-parameters.development", "true"); 19 PROPERTIES = Collections.unmodifiableMap(properties); 20 }

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

关于boot-devtools更多详细用法,点击参考官方文档。

推荐:Spring Boot & Cloud 最强技术教程

扫描关注我们的微信公众号,干货每天更新。

image

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

SpringBoot项目热部署

前言   此篇文章主要介绍两种springboot项目热部署的方式,方式一是通过引入devtool组件实现热部署,方式二是通过idea下载jrebel插件实现热部署,jrebel免费试用30天,但通过激活网站可获得jrebel激活序列码,阿都对两种方式都进行了测试,全部有效。一、devtool组件热部署实现原理:自动重启项目1.添加devtools依赖

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )