# springboot-profiles-demo **Repository Path**: tree_boss/springboot-profiles-demo ## Basic Information - **Project Name**: springboot-profiles-demo - **Description**: 推送 - **Primary Language**: Java - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-30 - **Last Updated**: 2025-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot, Profiles, Java ## README # Spring Boot Profiles 演示项目 ## 项目介绍 这是一个演示 Spring Boot Profiles 多环境配置管理功能的示例项目。通过本项目,您可以学习如何在 Spring Boot 应用中配置和使用不同环境(开发、测试、生产)的配置信息。 ## 功能特性 - **多环境配置**:支持开发(dev)、测试(test)、生产(prod)三个环境的配置隔离 - **配置优先级管理**:环境特定配置覆盖主配置中的同名配置 - **配置注入**:通过 `@ConfigurationProperties` 将配置映射到 Java 对象 - **环境信息展示**:提供 REST 接口查看当前环境的配置信息 - **环境变量支持**:生产环境支持从环境变量读取敏感配置(如数据库密码) ## 项目结构 ``` springboot-profiles-demo/ ├── pom.xml # Maven 项目配置文件 ├── src/ │ ├── main/ │ │ ├── java/com/example/ │ │ │ ├── SpringbootProfilesDemoApplication.java # 应用主类 │ │ │ ├── config/ # 配置类目录 │ │ │ │ ├── AppConfig.java # 应用配置管理 │ │ │ │ └── DatabaseConfig.java # 数据库配置管理 │ │ │ └── controller/ # 控制器目录 │ │ │ └── ProfileController.java # REST 接口控制器 │ │ └── resources/ │ │ ├── application.yml # 主配置文件 │ │ ├── application-dev.yml # 开发环境配置 │ │ ├── application-test.yml # 测试环境配置 │ │ └── application-prod.yml # 生产环境配置 │ └── test/ # 测试代码目录 ``` ## 环境配置说明 ### 1. 主配置文件 (application.yml) 主配置文件包含所有环境共享的基础配置,并指定默认激活的环境: ```yaml server: port: 8080 spring: profiles: active: dev # 默认激活开发环境 # 通用配置 app: name: SpringBoot Profiles Demo description: This is a demo application showing Spring Boot profiles usage ``` ### 2. 开发环境 (application-dev.yml) ```yaml # 开发环境配置 server: port: 8081 # 开发环境使用 8081 端口 app: environment: Development debug: true # 开发环境特定的数据库配置 database: url: jdbc:mysql://localhost:3306/dev_db username: dev_user password: dev_password ``` ### 3. 测试环境 (application-test.yml) ```yaml # 测试环境配置 server: port: 8082 # 测试环境使用 8082 端口 app: environment: Test debug: false # 测试环境特定的数据库配置 database: url: jdbc:mysql://localhost:3306/test_db username: test_user password: test_password ``` ### 4. 生产环境 (application-prod.yml) ```yaml # 生产环境配置 server: port: 80 # 生产环境使用 80 端口 app: environment: Production debug: false # 生产环境特定的数据库配置 database: url: jdbc:mysql://prod-db-server:3306/prod_db username: prod_user password: ${DB_PASSWORD:default_prod_password} # 支持从环境变量读取密码 ``` ## 如何运行 ### 1. 使用默认环境运行 默认情况下,应用将使用 `application.yml` 中指定的 `dev` 环境: ```bash mvn spring-boot:run ``` 应用将启动在 8081 端口(开发环境配置)。 ### 2. 切换环境运行 #### 方式一:修改配置文件 编辑 `application.yml` 文件,更改 `spring.profiles.active` 的值: ```yaml spring: profiles: active: test # 或 prod ``` #### 方式二:通过命令行参数指定 ```bash # 使用测试环境 mvn spring-boot:run -Dspring-boot.run.profiles=test # 或使用生产环境 mvn spring-boot:run -Dspring-boot.run.profiles=prod ``` #### 方式三:通过系统环境变量指定 ```bash # 设置环境变量 SPRING_PROFILES_ACTIVE=test # 然后运行应用 mvn spring-boot:run ``` ## 访问接口 应用启动后,可以通过以下接口查看配置信息: ### 1. 简单信息接口 ``` GET http://localhost:[端口]/hello ``` 返回示例(开发环境): ``` Hello from Development environment! Running on port 8081 ``` ### 2. 详细配置信息接口 ``` GET http://localhost:[端口]/profile ``` 返回示例: ```json { "appName": "SpringBoot Profiles Demo", "appDescription": "This is a demo application showing Spring Boot profiles usage", "appEnvironment": "Development", "appDebug": true, "serverPort": "8081", "database": { "url": "jdbc:mysql://localhost:3306/dev_db", "username": "dev_user", "password": "[PROTECTED]" }, "activeProfiles": ["dev"], "defaultProfiles": ["default"] } ``` ## 配置类说明 ### AppConfig 用于管理应用基本配置的类,对应 `app` 前缀的配置项: ```java @Component @ConfigurationProperties(prefix = "app") public class AppConfig { private String name; private String description; private String environment; private boolean debug; // Getters and Setters } ``` ### DatabaseConfig 用于管理数据库配置的类,对应 `database` 前缀的配置项: ```java @Component @ConfigurationProperties(prefix = "database") public class DatabaseConfig { private String url; private String username; private String password; // Getters and Setters } ``` ## 生产环境安全注意事项 1. **密码保护**:生产环境中,敏感信息(如数据库密码)应通过环境变量传入,避免硬编码在配置文件中 2. **调试模式**:生产环境中应确保 `debug` 设置为 `false` 3. **端口配置**:生产环境通常使用标准端口(如 80 或 443) 4. **数据库连接**:生产环境应使用专用的生产数据库服务器 ## 版本信息 - Spring Boot: 2.7.18 - Java: 1.8+ - Maven: 3.6+ ## License This project is licensed under the MIT License - see the LICENSE file for details.