栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Arthas + JRebel 提高开发效率

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Arthas + JRebel 提高开发效率

前言之前
所谓十倍提高效率,也是有场景限制的,并不会原本需要 10 个小时的任务,突然 1 个小时就能完成了。

这里指的是,本地使用 Spring 环境开发时,通过这套方法,可以随时调用任意方法,不需要反复重启,不需要编写入口代码(如 HTTP 入口),不需要等待 XXL-JOB 的任务调度。在这些场景下,会提高十倍效率一点也不为过。

准备工作
安装 JRebel
JRebel 可以使得大部分代码修改,如新增接口、类、方法时均可无需重启,热加载变更代码。

安装 JRebel and XRebel for IntelliJ, (激活方式可以参考这里) 在启动项目时选择 JRebel 的 Debug 模式启动,并在启动配置的 On ‘Update’ action 选项中选择「Update classes and resources」:

之后在修改代码后点击更新按钮即可:

安装 JRebel MybatisPlus Extension(可选)
JRebel 没有为 Mybatisplus 做适配,所以还需要这个插件:

启动失败
安装插件之后启动,可能会提示 mybatis xml 检查不通过,启动报错。此时则需要按照报错提示,清除掉 mybatis xml 中重复的代码。

之后更新 xml 后点击刷新,可能会出现「Loaded classes are up to date. Nothing to reload.」,看起来好像没检测到要 reload 的东西,但实际上可能已经 reload 过了,再次调用修改后的 sql ,控制台会出现「JRebel: Reloading SQL maps」。

启动 Arthas
Arthas 是一个万能的 Java 在线诊断工具,我们下面会将 Arthas 结合 JRebel 一起使用。

启动 Arthas 有两种方式,一种是在项目启动后,单独运行 arthas。另一种是项目中集成 Arthas,随着项目一起启动。在本地单独启动 arthas 有点麻烦,而且与 IDEA 可能会有点冲突。所以建议开发时在项目中集成 Arthas:

安装 Arthas IDEA 插件
该插件可以很方便地快速获取命令,否则的话则需要背熟 Arthas 文档。直接 IDEA 插件市场搜索 arthas-idea-plugin ,或参考 https://arthas.aliyun.com/doc/idea-plugin.html 。

设置 Spring Context
要在 Spring 的上下文中调用方法,就需要先设置 SpringContext 的位置,该配置在 arthas 的插件设置中。我们接下来要调用 Spring 方法时,实际上是先从 spring context 中 getBean(),通过这个 bean 来调用方法。

两种方式,一个是在启动的 main 方法中保存下来启动之后的返回值,并保存为 static 变量:

另一种方式是写一个类,实现 ApplicationContextAware 接口并保存下 ApplicationContext,参考代码如下:

@Component
@Order
public class ApplicationContextHolder implements ApplicationContextAware {
    
    private static ApplicationContext applicationContext;
    
    @Autowired
    public ApplicationContextHolder(ApplicationContext applicationContext) {
        ApplicationContextHolder.applicationContext = applicationContext;
    }
}

设置 Arthas IDEA 插件
在 设置 → Arthas Idea Plugin → Spring Static Context Ognl Setting 中填入上一步获取的地址。「@ApplicationContextHolder 完整类路径@context」

愉快地玩耍
需要调用某个 Spring 环境下的方法时,点击 arthas 插件中的「Static Spring Context Invoke Method Field」,获取命令后粘贴到 Arthas 控制台执行:

当方法发生改变时,只需要点击更新按钮,再通过 arthas 进行调用即可。

下面是一个小 Demo,看了你就会明白它的强大之处:

再快一点点
在调用 Arthas 命令时,需要在浏览器中打开 localhost:8563,调用时需要来回切界面,有些许的麻烦。

可以在 IDEA 中搜索插件 「Embedded Web Browser」,右侧会有一个小小的浏览器窗口。在这个打开即可以无需切页面,在 IDEA 中直接打开窗口,用完就关:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/314902.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号