1. 什么是 spring-boot-devtools
spring-boot-devtools 是 spring-boot项目开发时的一个热部署工具,安装了 spring-boot-devtools 依赖,咱们在修改源代码后无需 mvn spring-boot:run
手动重启spring-boot项目,spring-boot-devtools 会自动帮咱们从新启动项目。
默认状况下,spring-boot-devtools 会检测 项目文件夹的类路径上的全部文件。注意,某些资源(如静态资产和视图模板)不须要从新启动项目。web
2. spring-boot:run 的使用:
首先,要在pom.xml文件中配置依赖spring
<!--自动重启 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
配置好依赖后,运行项目的时候就会自动下载spring-boot-devtools 工具包,当咱们对项目路径下的文件进行了修改,点击保存,就会触发重启。tomcat
注意,默认状况下,更改/META-INF/maven、/META-INF/resources、 /resources、/static、/public 不会触发重启。app
若是想设置这些排除,能够在 applcation.properties文件中设置spring.devtools.restart.exclude
。
例如,仅排除/static 和 /public 下的全部文件:eclipse
spring.devtools.restart.exclude=static/**,public/**
3. 如何禁用重启?
1)在application.properties中设置maven
spring.devtools.restart.enabled=false
2)彻底禁用从新启动支持,须要设置spring.devtools.restart.enabled系统属性spring-boot
public static void main(String[] args) { System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(MyApp.class, args); }
注意踩坑:
以前使用eclipse作 spring-boot 作一个web项目的时候,配置了 spring-boot-devtools 依赖,第一次开启项目运行没有问题,而后习惯性的关闭项目去修改代码,修改完代码点击启动项目,报错:端口号被占用。
这个错误在学习web的时候若是操做失误,是最多见的错误之一,通常只要关闭了还在开启状态的tomcat就能够解决。
在使用spring-boot配置的web项目中,须要配置 spring-boot-web 依赖,这个依赖中内置有一个tomcat,因此在正常状况下,咱们直接关闭项目是会自动关闭tomcat的,但在这里竟然报错!
而后网上搜了半天,发现是 spring-boot-devtools 的问题,尝试禁用热部署,发现仍是不行(多是我环境问题,网上看有的人是成功了的)。这时候只能打开终端,输入:netstat -aon|findstr "8080"
查看正在占用8080端口的进程id(pid),而后打开任务管理器,关闭这个进程(或者直接在终端中输入命令关闭:taskkill /pid 4484 -f
4484是占用8080端口的pid号)工具