龙空技术网

debug总是重启,剧情连不上?

evilRat 110

前言:

而今同学们对“java为什么打不开debug”大概比较关怀,同学们都想要分析一些“java为什么打不开debug”的相关知识。那么小编在网摘上汇集了一些对于“java为什么打不开debug””的相关文章,希望姐妹们能喜欢,各位老铁们快快来了解一下吧!

devtools是什么

debug代码的时候,发现是个小bug,都不值得劳资手动重启应用怎么办?

springboot提供了一个spring-boot-devtools的工具,让我们在上述场景中提升效率。

它可以监控classpath下的资源,一旦classpath下有变动,就会触发应用重启。

如何使用devtools

在项目中添加spring-boot-devtools依赖:

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

这里设置optional为true,是因为spring-boot-devtools一般只适用于开发环境,在生产环境是需要禁用的。这样我们通过java -jar去启动应用,就不会启用devtools了,当然也可以防止devtools传递给依赖本应用的应用。

如何触发应用重启?

Eclipse,对源文件修改并保存,就会触发重启。IDEA,构建项目触发重启,Build -> Build Project。

当然如果你的机器配置高,IDEA勾选下图选项,可以在你修改文件后一定时间自动重启。

机器好可以这么玩,性能差就算了,因为devtools重启的时候,你的机器可能还没变编译完,就是起来了,也是个不完整的应用,比如controller没加载,调接口直接404……不要问我为什么知道,问就是我踩过。

不过这也能操作,毕竟原因我们知道了,就是还没构建完成,devtools就重启了呗,那咱们就让devtools晚会儿重启呗。。

spring:    devtools:        restart:            poll-interval: 3s

这里设置devtools检测周期长一点,我3s够了,你不够再长点呗。。

有几点需要注意:

devtools 将会使用独立的类加载器。devtools 依赖应用程序关闭钩子,如果你的应用禁用了关闭钩子(SpringApplication.setRegisterShutdownHook(false)),devtools 将会失效。在决定是否应该触发重启时,devtools 将会自动忽略名为 spring-boot , spring-boot-devtools , spring-boot-autoconfigure , spring-boot-actuator 和 spring-boot-starter 的项目。

标签: #java为什么打不开debug