# 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-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Boot Hot Reload Agent Spring Boot 应用热重载工具,只需添加依赖即可启用,无需安装插件。 ## 快速开始 ### 1. 添加依赖 **Maven:** ```xml com.wzs hotswap-agent 1.0.0 ``` **Gradle:** ```groovy implementation 'com.wzs:hotswap-agent:1.0.0' ``` ### 2. 启动应用 正常启动 Spring Boot 应用即可,Agent 会自动初始化: ``` [HotSwapAutoConfiguration] Starting HotSwap... [HotSwapStarter] Socket server started on port 54321 [HotSwapStarter] File watcher started for 2 module(s) [HotSwapStarter] ======================================== [HotSwapStarter] Hot Reload Starter initialized successfully [HotSwapStarter] Port: 54321 [HotSwapStarter] File watcher: enabled [HotSwapStarter] ======================================== ``` ### 3. 触发热重载 修改 Java 文件后编译(IDE 中 Build → Build Project 或 Ctrl+F9),Agent 会自动检测 `.class` 文件变化并热重载。 ## 功能特性 | 功能 | 支持情况 | |------|:--------:| | Controller 方法修改 | ✅ | | Controller 新增/删除方法 | ✅ | | Controller URL 映射变更 | ✅ | | Service 方法修改 | ✅ | | @Transactional Service 代理穿透 | ✅ | | 运行时状态保留 | ✅ | | Properties/YML 配置修改 | ✅ | | XML 配置修改 | ✅ | | 批量类重载 | ✅ | ## 工作原理 ``` ┌─────────────────────────────────────────────────────────────┐ │ 开发环境 │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ 修改代码 │ → │ IDE 编译 │ → │ .class 文件 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 运行中的应用 │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ FileWatcher │ → │ ClassLoader │ → │ Spring Bean │ │ │ │ 文件监听 │ │ 版本化加载 │ │ 动态替换 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 配置选项 在 `application.properties` 或 `application.yml` 中配置: ```properties # 启用/禁用热重载(默认启用) hotswap.enabled=true ``` ## 可选:javaagent 方式启动 如果不想将 Agent 作为依赖引入,也可以使用 javaagent 方式: ```bash # 构建 agent jar ./gradlew agent:shadowJar # 以 javaagent 方式启动 java -javaagent:agent/build/libs/agent-1.0-all.jar=port=54321 -jar your-app.jar ``` ## 项目结构 ``` agent/ ├── src/main/java/com/wzs/agent/ │ ├── HotSwapStarter.java # 启动入口 │ ├── HotSwapAgent.java # Agent 主类 │ ├── HotSwapClassLoader.java # 版本化类加载器 │ ├── autoconfigure/ │ │ └── HotSwapAutoConfiguration.java # Spring Boot 自动配置 │ ├── socket/ │ │ └── HotSwapServer.java # Socket 服务端 │ ├── spring/ │ │ ├── SpringBeanReloader.java # Bean 动态替换 │ │ └── XmlConfigReloader.java # 配置文件重载 │ └── watcher/ │ └── FileWatcher.java # 文件监听 └── src/main/resources/ └── META-INF/spring/ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ``` ## 构建 ```bash # 构建 ./gradlew agent:build # 发布到本地 Maven 仓库 ./gradlew agent:publishToMavenLocal # 运行测试 ./gradlew agent:test ``` ## 测试 项目包含 158 个自动化测试: ```bash ./gradlew agent:test ``` 测试报告位于 `agent/build/reports/tests/test/index.html` ## 注意事项 - **JDK 版本**: 需要 JDK 8+ - **Spring Boot 版本**: 支持 2.x - **不支持的场景**: 接口方法签名变更、新增 Bean 定义 ## License MIT