热加载配置说明.md 7.0 KB

Spring Boot DevTools 热加载配置说明

📋 配置概述

配置时间: 2025-01-26 14:20:00
配置模块: ruoyi-admin
配置目标: 实现代码热加载,提高开发效率

🔧 已完成的配置

1. Maven 依赖配置

在 backend/ruoyi-admin/pom.xml 中已添加:

<!-- Spring Boot DevTools 热部署 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
    <scope>runtime</scope>
</dependency>

2. 应用配置

在 backend/ruoyi-admin/src/main/resources/application-dev.yml 中已添加:

--- # 开发工具配置
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

推荐配置:

  1. 优化热加载效果

    • File → Settings → Advanced Settings
    • 勾选 Allow auto-make to start even if developed application is currently running
  2. 配置运行配置

    • 在运行配置中,确保选择的是开发环境 (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. 启动应用

    cd backend/ruoyi-admin
    mvn spring-boot:run -Dspring-boot.run.profiles=dev
    
    1. 或使用 IDE 运行
    2. 在 IDEA 中直接运行 RuoYiApplication 主类
    3. 确保选择 dev 环境

    触发热加载

    当您修改以下类型的文件时,会自动触发热加载:

    • ✅ Java 源代码 (.java 文件)
    • ✅ 配置文件 (.properties, .yml 文件)
    • ✅ 资源文件 (classpath 下的资源)
    • ✅ MyBatis 映射文件 (.xml 文件)

    手动触发重启

    如果需要手动触发重启,可以:

    1. 修改触发文件
    # 在项目根目录创建或修改触发文件
    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. 启动应用

    mvn clean compile spring-boot:run -Dspring-boot.run.profiles=dev
    
    1. 观察控制台输出 看到类似以下日志表示 DevTools 正常工作:

      2025-01-26 14:20:00.123  INFO 12345 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
      
    2. 测试热加载

    3. 修改一个 Controller 方法

    4. 保存文件

    5. 观察控制台是否出现重启日志

    6. 测试 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

📚 相关文档


✅ 热加载配置完成: ruoyi-admin 模块已成功配置热加载功能,可以大幅提高开发效率!

📝 使用提示: 修改 Java 代码后,应用会在 1-3 秒内自动重启,无需手动重启服务。