Spring Method Agent:一款无侵入的Spring方法级调试神器

Spring Method Agent:一款无侵入的Spring方法级调试神器

🎯 工具简介

Spring Method Agent ​ 是一款面向Java开发者的高效调试工具,能够以零代码侵入的方式对Spring项目进行方法级别的测试和调试。通过Java Agent技术,在Spring应用启动时进行增强,无需修改任何业务代码即可实现方法的可视化查询与调用。

✨ 核心特性

  • 无代码侵入:基于Java Agent实现,对应用完全透明
  • 可视化操作:内置Web界面,直观查看和调用Spring Bean方法
  • 方法Mock支持:无需修改代码即可模拟方法返回值
  • 条件Mock:支持基于条件的智能Mock规则
  • 多数据类型:支持JSON、对象、数组、基本类型等多种返回值
  • 灵活配置:支持动态配置和规则管理

🚀 快速开始

1. 下载安装

gitee.com/xiaowomiaom...

2. 配置启动参数

bash 复制代码
-javaagent:{your path}/spring-method-agent-2.0.0.jar

3. 启动应用

应用启动后,工具会监听8100端口 (可通过-Dagent.port=8080修改)

4. 访问界面

arduino 复制代码
http://localhost:8100

🔧 Mock功能介绍

启用Mock

ini 复制代码
-Dsma.mockEnable=true
-Dsma.configPath=/yourPath/sma-mockConfig

配置文件示例

json 复制代码
{
  "globalEnabled": true,
  "rules": [
    {
      "className": "org.example.controller.EchoController",
      "methodName": "echo",
      "conditionField": "url",
      "conditionValue": "hello",
      "mockReturnValue": "lin",
      "enabled": true
    },
    {
      "className": "org.example.controller.EchoController",
      "methodName": "user",
      "conditionField": "user.name",
      "conditionValue": "bob",
      "mockReturnValue": {
        "age": 18,
        "name": "bob"
      },
      "enabled": true
    }
  ]
}

支持的数据类型

  • 字符串:"mockReturnValue": "lin"
  • 数字:"mockReturnValue": 3.14
  • 布尔值:"mockReturnValue": true
  • 对象:"mockReturnValue": { "age": 18, "name": "bob" }
  • 数组:"mockReturnValue": [1, 2, 3]
  • JSON字符串:"mockReturnValue": "{ "items": [1,2,3], "count": 3 }"

📊 应用场景

1. 快速调试

无需编写测试代码,直接在Web界面调用任意Spring Bean方法,查看返回结果。

2. 集成测试

在联调阶段模拟依赖服务的响应,无需启动完整的依赖链。

3. 问题排查

生产环境问题复现时,可以临时Mock方法返回值,快速定位问题。

4. 演示展示

在演示时Mock特定数据,避免依赖外部服务的不稳定性。

🎨 使用示例

场景一:条件Mock

当用户名为"bob"时,返回预设的用户信息:

json 复制代码
{
  "className": "org.example.controller.UserController",
  "methodName": "getUserInfo",
  "conditionField": "user.name",
  "conditionValue": "bob",
  "mockReturnValue": {
    "id": 1,
    "name": "bob",
    "role": "admin"
  }
}

场景二:异常模拟

json 复制代码
{
  "className": "org.example.service.PaymentService",
  "methodName": "processPayment",
  "conditionField": "amount",
  "conditionValue": 10000,
  "mockReturnValue": {
    "error": "余额不足",
    "code": "INSUFFICIENT_BALANCE"
  }
}

🔄 配置参数说明

参数 说明 默认值
className 完整类名(全限定名) 必填
methodName 要Mock的方法名 必填
conditionField 条件字段路径(可选) 可选
conditionValue 条件匹配值(可选) 可选
mockReturnValue Mock返回值 必填
enabled 规则开关 true
globalEnabled 全局Mock开关 true

⚡ 性能优势

  • 低开销:仅在方法调用时进行匹配检查
  • 按需加载:Mock规则可动态配置
  • 精准匹配:支持条件匹配,避免不必要的Mock开销

📈 对比传统方案

方案 代码侵入 维护成本 灵活性 学习成本
传统单元测试
Mock框架
Spring Method Agent

🤝 贡献与反馈

该项目已在GitHub开源,欢迎提交Issue和PR: GitHub项目地址

💡 使用建议

  1. 开发环境:长期启用,提升开发效率
  2. 测试环境:用于集成测试和场景模拟
  3. 生产环境:仅用于紧急问题排查,建议谨慎使用

通过这个工具,开发者可以节省大量 的测试代码编写时间,提升调试效率,让Spring应用的调试和测试变得更加简单高效。立即尝试,体验无侵入式调试的魅力!

相关推荐
Tao____2 小时前
基于若依RuoYi框架开发的物联网平台
java·物联网·mqtt·ruoyi·设备对接
程序员西西2 小时前
深入探索 Spring Boot3 中 Profiles 多环境配置
java·后端·架构
斯班奇的好朋友阿法法2 小时前
JAVA映射实体类对象和LIst
java·python·list
yyovoll2 小时前
java线程知识点介绍1
java·开发语言
一念一花一世界2 小时前
Arbess从基础到实践(5) - 集成GitLab+SonarQube搭建Java项目自动化部署
java·gitlab·sonarqube·cicd·arbess
萧曵 丶2 小时前
CompletableFuture 实际场景使用案例
java·多线程·并发编程·高级开发
_UMR_2 小时前
多线程场景的学习3,使用CountDownLatch
java·开发语言
无限大.2 小时前
验证码对抗史
java·开发语言·python
明月别枝惊鹊丶3 小时前
【C++】GESP 三级手册
java·开发语言·c++