Spring提供spring-boot-devtools(开发人员工具),这在开发调试程序时很有用。这个工具能够自动重启服务器,使用这个工具需要添加spring-boot-devtools依赖项。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
每当文件在类路径中发生更改时,使用spring-boot-devtools的应用程序将导致应用重新启动。此功能的好处是验证所做更改所需的时间大大减少:
spring-boot-devtools模块包括一个嵌入式LiveReload服务器,用于在资源更改时触发浏览器刷新。为了在浏览器中实现这一点,我们需要安装LiveReload插件,其中一个实现是用于Chrome的Remote Live Reload。
spring-boot-devtools提供了一种配置未与任何应用程序耦合的全局设置的方法。此文件名为.spring-boot-devtools.properties,位于$ HOME。
spring-boot-devtools通过HTTP提供现成的远程调试功能,要具备此功能,需要将spring-boot-devtools打包为应用程序的一部分。这可以通过在maven中的插件中禁用excludeDevtools配置来实现。
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludeDevtools>false</excludeDevtools> </configuration> </plugin> </plugins> </build>
现在通过HTTP进行远程调试工作,必须采取以下步骤:
1.应在服务器上部署和启动的应用时激活远程调试:
-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n
这里没有提到远程调试端口。因此,java将选择一个随机端口
2. 对于同一项目,使用你的IDE打开Launch配置,选择以下选项:
select main class:org.springframework.boot.devtools.RemoteSpringApplication
在参数中,添加你应用的URL,例如http:// localhost:8080
3. spring-boot应用调试器的默认端口是8000,可以通过以下方式覆盖:
spring.devtools.remote.debug.local-port=8010
4.现在创建一个远程调试配置,通过属性将端口设置为8010,或使用默认配置8000
使用该工具时,应该知道以下几点。
1.当我们创建JAR或WAR时采取完全打包方式时,将自动禁用该工具。
2.当我们使用java -jar或特殊的类加载器运行应用程序时,它被视为“生产应用程序”,开该工具将被自动禁用。
3.最佳做法是设置<optional> true </ optional>,以避免该工具影响到其他模块。
4.配置该工具后,对于IDE下项目会重启类加载器classloader实现爆炸式重启,对于完整打包的应用重启基类加载器。