# Spring Boot DevTools 热加载配置说明 ## 📋 配置概述 **配置时间**: 2025-01-26 14:20:00 **配置模块**: ruoyi-admin **配置目标**: 实现代码热加载,提高开发效率 ## 🔧 已完成的配置 ### 1. Maven 依赖配置 在 `backend/ruoyi-admin/pom.xml` 中已添加: ```xml org.springframework.boot spring-boot-devtools true runtime ``` ### 2. 应用配置 在 `backend/ruoyi-admin/src/main/resources/application-dev.yml` 中已添加: ```yaml --- # 开发工具配置 spring: # DevTools热部署配置 devtools: restart: # 启用热重启 enabled: true # 排除不需要重启的资源 exclude: 'static/**,public/**,templates/**,**/*Test.class,**/*Tests.class' # 额外的监控路径 additional-paths: 'src/main/java' # 监控排除路径 additional-exclude: '**/*.properties' # 重启触发文件 - 当此文件改动时触发重启 trigger-file: '.reloadtrigger' # 启用热重启日志 log-condition-evaluation-delta: false livereload: # 启用LiveReload,需要浏览器插件支持 enabled: true # LiveReload端口 port: 35729 ``` ## 🚀 IDE 配置指南 ### IntelliJ IDEA 配置 #### 必需配置步骤: 1. **启用自动编译** - 打开 `File` → `Settings` (macOS: `IntelliJ IDEA` → `Preferences`) - 导航到 `Build, Execution, Deployment` → `Compiler` - 勾选 `Build project automatically` 2. **启用运行时自动编译** - 在设置界面按 `Ctrl+Shift+A` (macOS: `Cmd+Shift+A`) - 搜索 `Registry` - 找到 `compiler.automake.allow.when.app.running` - 勾选此项 3. **配置项目设置** - 在项目设置中,确保模块的 `Output path` 指向 `target/classes` - 设置 `Test output path` 指向 `target/test-classes` #### 推荐配置: 4. **优化热加载效果** - `File` → `Settings` → `Advanced Settings` - 勾选 `Allow auto-make to start even if developed application is currently running` 5. **配置运行配置** - 在运行配置中,确保选择的是开发环境 (`dev` profile) - JVM 参数可以添加:`-Dspring.profiles.active=dev` ### Eclipse 配置 1. **启用自动构建** - `Window` → `Preferences` - `General` → `Workspace` - 勾选 `Build automatically` 2. **项目属性配置** - 右键项目 → `Properties` - `Java Build Path` → `Source` - 确保 `Default output folder` 设置正确 ## 🎯 使用方法 ### 基本使用 1. **启动应用** ```bash cd backend/ruoyi-admin mvn spring-boot:run -Dspring-boot.run.profiles=dev ``` 2. **或使用 IDE 运行** - 在 IDEA 中直接运行 `RuoYiApplication` 主类 - 确保选择 `dev` 环境 ### 触发热加载 当您修改以下类型的文件时,会自动触发热加载: - ✅ **Java 源代码** (.java 文件) - ✅ **配置文件** (.properties, .yml 文件) - ✅ **资源文件** (classpath 下的资源) - ✅ **MyBatis 映射文件** (.xml 文件) ### 手动触发重启 如果需要手动触发重启,可以: 1. **修改触发文件** ```bash # 在项目根目录创建或修改触发文件 touch backend/ruoyi-admin/.reloadtrigger ``` 2. **或者重新编译** - IDEA: `Ctrl+F9` (macOS: `Cmd+F9`) - Eclipse: 项目自动构建 ## 📊 热加载范围 ### ✅ 支持热加载的变更 - **Controller 类**: 新增/修改接口方法 - **Service 类**: 业务逻辑修改 - **Entity/VO 类**: 实体类字段修改 - **Mapper 接口**: MyBatis 接口方法 - **XML 映射文件**: SQL 语句修改 - **配置文件**: application.yml 等配置变更 - **静态资源**: CSS、JS、HTML 等前端资源 ### ❌ 不支持热加载的变更 - **依赖变更**: pom.xml 中添加/删除依赖 - **注解配置**: Spring 核心注解的结构性变更 - **Bean 定义**: 复杂的 Spring Bean 配置变更 - **安全配置**: 权限相关的重大变更 ## 🔍 验证热加载 ### 验证步骤 1. **启动应用** ```bash mvn clean compile spring-boot:run -Dspring-boot.run.profiles=dev ``` 2. **观察控制台输出** 看到类似以下日志表示 DevTools 正常工作: ``` 2025-01-26 14:20:00.123 INFO 12345 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729 ``` 3. **测试热加载** - 修改一个 Controller 方法 - 保存文件 - 观察控制台是否出现重启日志 - 测试 API 接口是否反映了变更 ### 热加载日志示例 ``` 2025-01-26 14:25:30.456 INFO 12345 --- [ Thread-1] o.s.b.d.a.ConditionEvaluationDeltaLoggingListener : Condition evaluation delta: ... 2025-01-26 14:25:30.789 INFO 12345 --- [ restartedMain] o.d.RuoYiApplication : Started RuoYiApplication in 2.345 seconds (JVM running for 45.678) ``` ## 🚨 注意事项 ### 性能考虑 1. **仅在开发环境使用** - DevTools 会占用额外内存和 CPU 资源 - 生产环境务必禁用 DevTools 2. **大型项目优化** - 如果项目较大,可以配置更精确的监控路径 - 排除不必要的文件类型避免误触发 ### 常见问题 1. **热加载不工作** - 检查 IDE 自动编译是否启用 - 确认运行的是开发环境配置 - 查看控制台是否有 DevTools 相关日志 2. **频繁重启** - 检查排除配置是否正确 - 避免修改频繁变动的配置文件 3. **某些变更不生效** - 复杂的 Spring 配置变更可能需要完全重启 - 数据库连接配置变更需要重启 ## 🎯 开发建议 ### 最佳实践 1. **合理使用** - 在开发阶段充分利用热加载 - 重大架构调整时考虑完全重启 2. **监控性能** - 注意应用启动时间变化 - 监控内存使用情况 3. **团队协作** - 确保团队成员都正确配置了 IDE - 统一开发环境配置标准 ### 进阶配置 ```yaml spring: devtools: restart: # 自定义重启类加载器 additional-paths: 'src/main/java,src/main/resources' # 更精确的排除规则 exclude: 'static/**,public/**,templates/**,**/*Test.class' # 触发文件监控 poll-interval: 1000 quiet-period: 400 ``` ## 📚 相关文档 - **Spring Boot DevTools 官方文档**: https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.devtools - **项目配置文档**: `docs/开发文档/README.md` - **IDE 配置指南**: `docs/开发文档/IDE配置.md` --- **✅ 热加载配置完成**: ruoyi-admin 模块已成功配置热加载功能,可以大幅提高开发效率! **📝 使用提示**: 修改 Java 代码后,应用会在 1-3 秒内自动重启,无需手动重启服务。