一、环境配置的基本原则
1.分离配置与代码:将配置与代码分离,确保不同环境使用不同的配置,而不需要修改代码。
2.使用配置文件:通常使用 application.properties 或 application.yml 文件来管理配置。
3.环境区分:通过不同的配置文件或配置中心来区分不同环境的配置,如 application-dev.yml、application-test.yml、application-prod.yml。
Spring Cloud Alibaba 大型互联网领域多场景最佳实践|完结无密_优课it
4.安全性:敏感信息(如数据库密码、API 密钥)应加密存储,避免硬编码在配置文件中。
5.配置中心:使用配置中心(如 Nacos、Spring Cloud Config)来集中管理配置,方便在不同环境中切换和更新配置。
二、使用不同的配置文件
1. 创建环境特定的配置文件
Spring Boot 支持根据激活的 Spring Profile 加载不同的配置文件。常见的做法是为每个环境创建一个独立的配置文件:
application-dev.yml(开发环境)application-test.yml(测试环境)application-prod.yml(生产环境)
2. 示例:application-dev.yml
yaml
取消自动换行
复制
spring:
application:
name: my-spring-cloud-app
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
sentinel:
transport:
port: 8719
dashboard: localhost:8080
datasource:
url: jdbc:mysql://localhost:3306/dev_db
username: dev_user
password: dev_password
3. 示例:application-prod.yml
yaml
取消自动换行
复制
spring:
application:
name: my-spring-cloud-app
cloud:
nacos:
discovery:
server-addr: 192.168.1.100:8848
config:
server-addr: 192.168.1.100:8848
file-extension: yaml
sentinel:
transport:
port: 8719
dashboard: 192.168.1.100:8080
datasource:
url: jdbc:mysql://192.168.1.100:3306/prod_db
username: prod_user
password: prod_password
4. 激活环境
在启动应用程序时,通过设置 spring.profiles.active 参数来激活相应的环境配置。例如:
-
开发环境:
bash 取消自动换行 复制 java -jar my-app.jar --spring.profiles.active=dev -
生产环境:
bash 取消自动换行 复制 java -jar my-app.jar --spring.profiles.active=prod
三、使用配置中心(Nacos)
使用 Nacos 作为配置中心,可以集中管理不同环境的配置,方便动态更新和版本控制。
1. 配置 Nacos
在 Nacos 中创建不同的配置集(Data ID),对应不同的环境。例如:
my-spring-cloud-app-dev.yaml(开发环境)my-spring-cloud-app-prod.yaml(生产环境)
2. 示例:my-spring-cloud-app-dev.yaml
yaml
取消自动换行
复制
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db
username: dev_user
password: dev_password
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
sentinel:
transport:
port: 8719
dashboard: localhost:8080
3. 示例:my-spring-cloud-app-prod.yaml
yaml
取消自动换行
复制
spring:
datasource:
url: jdbc:mysql://192.168.1.100:3306/prod_db
username: prod_user
password: prod_password
cloud:
nacos:
discovery:
server-addr: 192.168.1.100:8848
config:
server-addr: 192.168.1.100:8848
file-extension: yaml
sentinel:
transport:
port: 8719
dashboard: 192.168.1.100:8080
4. 配置 Spring Boot 应用程序
在 application.yml 中配置 Nacos 配置中心:
yaml
取消自动换行
复制
spring:
application:
name: my-spring-cloud-app
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
# 指定激活的环境
shared-configs:
- data-id: my-spring-cloud-app-${spring.profiles.active}.yaml
refresh: true
5. 激活环境
通过设置 spring.profiles.active 参数来激活相应的环境配置。例如:
-
开发环境:
bash 取消自动换行 复制 java -jar my-app.jar --spring.profiles.active=dev -
生产环境:
bash 取消自动换行 复制 java -jar my-app.jar --spring.profiles.active=prod
四、敏感信息管理
1. 使用加密
对于敏感信息,可以使用加密工具(如 Jasypt)进行加密存储。例如:
yaml
取消自动换行
复制
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db
username: ENC(encrypted_username)
password: ENC(encrypted_password)
2. 配置 Jasypt
在 application.yml 中配置 Jasypt:
yaml
取消自动换行
复制
jasypt:
encryptor:
password: my-secret-password
3. 启动 Jasypt 依赖
在 pom.xml 中添加 Jasypt 依赖:
xml
取消自动换行
复制
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
4. 加密和解密
使用 Jasypt 提供的工具对敏感信息进行加密,并在配置文件中使用 ENC() 包裹加密后的字符串。
五、配置优先级
Spring Boot 和 Spring Cloud 提供了多种配置方式,配置优先级如下:
- 1.命令行参数:通过命令行传递的参数优先级最高。
- 2.环境变量:环境变量的优先级次之。
- 3.配置文件:
application.yml或application.properties的优先级再次之。 - 4.默认配置:应用程序内部的默认配置优先级最低。
六、示例:完整的配置流程
1. 创建不同环境的配置文件
application-dev.ymlapplication-test.ymlapplication-prod.yml
2. 配置 Nacos 配置中心
在 Nacos 中创建对应的配置集,并确保 spring.cloud.nacos.config.server-addr 指向正确的 Nacos 服务器地址。
3. 配置应用程序
在 application.yml 中配置 Nacos:
yaml
取消自动换行
复制
spring:
application:
name: my-spring-cloud-app
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
shared-configs:
- data-id: my-spring-cloud-app-${spring.profiles.active}.yaml
refresh: true
discovery:
server-addr: 127.0.0.1:8848
sentinel:
transport:
port: 8719
dashboard: 127.0.0.1:8080
4. 启动应用程序
通过命令行参数激活相应的环境:
bash
取消自动换行
复制
java -jar my-app.jar --spring.profiles.active=prod
七、总结
在不同环境下配置 Spring Cloud Alibaba,主要通过以下步骤实现:
- 1.创建环境特定的配置文件:为每个环境创建独立的配置文件。
- 2.使用配置中心:利用 Nacos 等配置中心集中管理配置,方便动态更新和版本控制。
- 3.管理敏感信息:使用加密工具管理敏感信息,确保安全性。
- 4.配置优先级管理:了解配置优先级,合理设置配置,确保应用程序在不同环境下正确加载配置。
- 5.自动化部署:结合 CI/CD 工具,实现配置的自动化管理和部署。