——在不改变原有使用方式的情况下增强 watch 命令
1. 背景:为什么需要增强 Arthas watch
原生 Arthas 的能力主要集中在:
- 查看方法入参、返回值、异常
- 查看对象内部状态
- 动态观察方法执行耗时
- 条件触发(如参数为特定值时执行)
但看不到方法调用链内部的 SQL —— MyBatis 执行 SQL 时使用自己的拦截链,不会自然暴露给 Arthas。
而我们希望的能力是:
- 不修改业务代码
- 不重启应用
- 不改动 Arthas 的使用习惯
- 在 watch demo.MathGame primeFactors -x 2 的同时能看到该方法内触发的 MyBatis SQL
因此我们选择的方案是 —— 在不改变 Arthas 使用方式的前提下,为 watch 增加 SQL 观测能力。
如果是本地开发:推荐使用 MyBatis Log Ultra 插件
在本地开发调试时,并不推荐使用 Arthas,因为:
- 本地 IDE 直接有完整的 SQL 日志更方便
- 插件支持可视化展示 SQL
- 可以展开参数、格式化 SQL、查看耗时
- 完全零侵入,无需任何配置
在本地场景,直接用这个插件就足够了。