请教关于 spring-boot-devtools 的问题

62 天前
 JYii
最近敲项目发现任何的改动,重新编译后执行会导致报一些奇怪的错误,包括不限于类找不到、类型异常等等。

而且重启依旧如此,只能 mvn clean install 后启动应用才正常。

观察日志,修改代码编译后,devtools 会重启应用,没任何有价值的日志,跟正常启动差不多,打开 debug 日志,交给 gemini 分析:

您的项目中存在某个组件(很可能是一个我们没找到的、行为不当的自定义线程池或第三方库),这个组件导致了 Spring 应用上下文 无法被干净地关闭。
* 当 DevTools 尝试进行 Restart 时,它在这个“关闭上下文”的步骤上失败了(正如我们日志中看到的,数据库连接池没有被关闭),导致整个应用处于一种“僵尸”状态。

尝试找了项目中可能未正确关闭的代码,线程池、threadlocal 等等,还有第三方依赖,这属实范围难度有点大,索性就把 devtool 注释了。
关闭后,通过 idea 的自动编译,反而可以正常工作了。

这个 devtool 是我没有使用好吗,搜了下主要是自动重启、静态资源刷新(前后端分离直接忽略)

环境:idea 最新版,jdk17 ,springboot 最新版
2015 次点击
所在节点    Java
10 条回复
ChaYedan666
62 天前
没必要纠结在这个上面了,一堆坑🤮。idea 本身现在也自带修改代码后会提示你是不是需要应用热更新,大部分情况下确实没问题,但一旦出问题,第一时间完全想不到,浪费时间找半天排坑。
就正常重新编译重启得了,顺便起来活动活动筋骨
Romic
62 天前
spring-boot-devtools 基本不用,都是直接重启,热更新 掌握不了。
newaccount
62 天前
前阵子刚从 POM 里删掉
原本就没啥用,还遇到了跟 redis 一起用的时候报错,不想折腾
worldgg
62 天前
devtool 踩过坑,早就不用了,上班因为 devtool 的问题 只会浪费自己的时间,得不偿失
oneisall8955
62 天前
还是习惯 Ctrl + Shift +F9
cookii
62 天前
可能是因为项目代码没有遵从 spring 的最佳实践。
loong95
62 天前
不如用 jrebel
cvbnt
62 天前
没 jrebel 好用
totoro52
61 天前
从不用 devtool 这玩意,每次都提示我安装,烦死了 jrebel 秒杀
uselesswater
37 天前
热重启不建议使用,我天哪,这玩意儿简直就是用来折磨人的,之前很多次,都是因为热重启,导致的错误,本来代码没有问题,就是因为这个热重启,导致,查错查很久,发现啥问题没有,断点跑,发现一些数据直接不存在,直接为空,还以为是逻辑出错,最后一通查找,发现没啥问题呀,于是重新清除重新编译启动,TM 恢复正常了。这玩意儿已经折磨我很多次了,容易出 bug 的地方就是在序列化上,如果使用到 aop 更容易出问题,所以真不建议用,有时候出错自己会怀疑自己,反而浪费了很多不该浪费的时间去排错。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1143059

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX