# springreload **Repository Path**: IceCream1012/springreload ## Basic Information - **Project Name**: springreload - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-27 - **Last Updated**: 2026-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Boot Hot Reload IDEA Plugin IntelliJ IDEA 插件,实现 Spring Boot 应用的热更新功能,无需重启应用。 ## 功能特性 - 支持类方法的新增、修改、删除 - 支持 Spring Bean 的动态替换 - 保留静态字段和 Bean 实例的状态 - 零配置,安装即用 - 自动检测 Spring Boot 项目并注入 Agent ## 项目结构 ``` springboot-reload-plugin/ ├── plugin/ # IDEA 插件模块 (Kotlin) │ └── src/main/kotlin/com/example/hotreload/ │ ├── extension/ # 运行配置扩展 │ ├── listener/ # 文件监听器 │ ├── service/ # 服务层 │ ├── transport/ # Socket 通信 │ ├── util/ # 工具类 │ └── action/ # 手动 Attach 操作 │ └── agent/ # JVM Agent 模块 (Java) └── src/main/java/com/example/agent/ ├── HotSwapAgent.java # Agent 入口 ├── HotSwapClassLoader.java # 版本化类加载器 ├── socket/ # Socket 服务端 └── spring/ # Spring 集成 ``` ## 构建 ### 前置要求 - JDK 17+ - IntelliJ IDEA 2023.2+ - Gradle 8.0+ ### 构建步骤 ```bash # 1. 构建 Agent cd agent gradlew shadowJar # 2. 构建 Plugin cd ../plugin gradlew buildPlugin # 3. 生成的插件位于 # plugin/build/distributions/springboot-hot-reload-*.zip ``` ## 安装使用 ### 方式一:从本地安装 1. 构建 plugin: `gradlew buildPlugin` 2. IDEA 中:`Settings` → `Plugins` → ⚙️ → `Install Plugin from Disk` 3. 选择 `plugin/build/distributions/` 下的 zip 文件 4. 重启 IDEA ### 方式二:开发模式运行 ```bash cd plugin gradlew runIde ``` ## 工作原理 ``` ┌─────────────────────────────────────────────────────────────┐ │ IDEA 插件端 │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ 文件变更监听 │→ │ 增量编译 │→ │ Socket 发送 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 运行时 Agent (JVM) │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Socket 接收 │→ │ ClassLoader │→ │ Spring Bean │ │ │ │ │ │ 版本化加载 │ │ 动态替换 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ### 工作流程 1. **启动注入**: IDEA 插件自动在 Spring Boot 启动时添加 `-javaagent` 参数 2. **文件监听**: 监听 Java 文件保存事件 3. **增量编译**: 调用 IDEA 编译器生成新的 class 文件 4. **Socket 传输**: 将 class 文件发送到运行中的 Agent 5. **类重载**: Agent 使用版本化 ClassLoader 加载新类 6. **Bean 更新**: 更新 Spring 容器中的 BeanDefinition ## 使用说明 1. 用 IDEA 的 Debug/Run 按钮启动 Spring Boot 应用 2. 修改代码并保存 (Ctrl+S) 3. 自动热更新生效 ## 限制与注意事项 1. **JDK 版本**: 需要 JDK 17+ 2. **IDEA 版本**: 需要 2023.2+ Ultimate Edition (需要 Spring 插件) 3. **不支持**: - 配置类 (`@Configuration`) 的结构变更 - 接口方法签名的变更 - `@Value` 注解的字段新增 ## 开发计划 - [ ] 支持 Maven/Gradle 项目自动配置 - [ ] 支持 Configuration 类的热更新 - [ ] 增强静态字段复制逻辑 - [ ] 添加热更新日志面板 - [ ] 支持多模块项目 ## 许可证 MIT License