# 环境配置说明 ## 配置文件结构 项目使用YAML格式的配置文件,支持多环境配置: ``` src/main/resources/ ├── application.yml # 主配置文件 ├── application-dev.yml # 开发环境配置 ├── application-test.yml # 测试环境配置 └── application-prod.yml # 生产环境配置 ``` ## 环境切换 ### 1. 通过启动脚本 ```bash # 开发环境 start-dev.bat # 测试环境 start-test.bat # 生产环境 start-prod.bat ``` ### 2. 通过命令行参数 ```bash # 开发环境 java -jar -Dspring.profiles.active=dev app.jar # 测试环境 java -jar -Dspring.profiles.active=test app.jar # 生产环境 java -jar -Dspring.profiles.active=prod app.jar ``` ### 3. 通过环境变量 ```bash # Windows set SPRING_PROFILES_ACTIVE=dev # Linux/Mac export SPRING_PROFILES_ACTIVE=dev ``` ## 各环境配置详情 ### 开发环境 (dev) **特点**: - 端口:8080 - 文件路径:`D:/dev/images/` - 日志级别:DEBUG/TRACE - 缓存时间:1小时 - 启用调试模式 **适用场景**: - 本地开发 - 功能调试 - 单元测试 ### 测试环境 (test) **特点**: - 端口:8081 - 文件路径:`/app/test/images/` - 日志级别:INFO/DEBUG - 缓存时间:2小时 - 启用性能监控 - 日志文件输出 **适用场景**: - 集成测试 - 性能测试 - 预发布验证 ### 生产环境 (prod) **特点**: - 端口:80 - 文件路径:`/data/images/` - 日志级别:WARN/INFO - 缓存时间:24小时 - 性能优化配置 - 安全限制 - 监控配置 **适用场景**: - 正式生产环境 - 高并发场景 - 稳定服务 ## 配置项说明 ### 核心配置 | 配置项 | 开发环境 | 测试环境 | 生产环境 | 说明 | |--------|----------|----------|----------|------| | server.port | 8080 | 8081 | 80 | 服务端口 | | thumbnail.file.prefix | D:/dev/images/ | /app/test/images/ | /data/images/ | 文件路径前缀 | | thumbnail.quality | 0.8 | 0.7 | 0.9 | 图片质量 | | thumbnail.cache.max-age | 3600 | 7200 | 86400 | 缓存时间(秒) | ### 日志配置 | 环境 | 根日志级别 | 应用日志级别 | 文件输出 | |------|------------|--------------|----------| | dev | DEBUG | TRACE | 否 | | test | INFO | DEBUG | 是 | | prod | WARN | INFO | 是 | ### 性能配置 | 配置项 | 生产环境值 | 说明 | |--------|------------|------| | performance.thread-pool.core-size | 10 | 线程池核心大小 | | performance.thread-pool.max-size | 50 | 线程池最大大小 | | performance.thread-pool.queue-capacity | 1000 | 队列容量 | ### 安全配置 | 配置项 | 生产环境值 | 说明 | |--------|------------|------| | security.rate-limit.enabled | true | 是否启用速率限制 | | security.rate-limit.requests-per-minute | 100 | 每分钟请求限制 | ## 自定义配置 ### 添加新的配置项 1. 在相应的 `application-{profile}.yml` 文件中添加配置 2. 在 `AppConfig.kt` 中添加对应的获取方法 3. 在需要使用的地方注入 `AppConfig` 并调用相应方法 示例: ```yaml # application-dev.yml custom: feature: enabled: true timeout: 30 ``` ```kotlin // AppConfig.kt fun isCustomFeatureEnabled(): Boolean { return appContext.cfg().getBool("custom.feature.enabled") ?: false } fun getCustomTimeout(): Int { return appContext.cfg().getInt("custom.feature.timeout") ?: 30 } ``` ## 配置文件优先级 1. 命令行参数 2. 环境变量 3. application-{profile}.yml 4. application.yml 5. 默认值 ## 常见问题 ### Q: 如何查看当前使用的配置文件? A: 查看启动日志,会显示当前激活的profile和加载的配置文件。 ### Q: 配置修改后需要重启吗? A: 是的,配置文件修改后需要重启应用才能生效。 ### Q: 如何在运行时获取当前环境? A: 可以通过 `AppConfig.getActiveProfile()` 方法获取。 ### Q: 可以同时激活多个环境吗? A: 可以,但建议只激活一个主环境,避免配置冲突。