如何把云端密钥、密码等隐私配置,从 application.yml 里抽离,本地开发用,测试/启动时切换,绝不提交到 Git!

一、核心思路(一句话)

  1. 公共配置:放 application.yml(提交Git)
  2. 隐私配置:放 application-local.yml不提交Git
  3. 启动/测试时:指定激活 local 环境,自动合并隐私配置

二、具体实现步骤(跟着做就能用)

1. 创建 2 个配置文件

① application.yml (公共配置,可提交Git)

spring:
  profiles:
    # 默认激活 local(本地开发)
    active: local

# 这里只放非敏感配置
my:
  upload:
    # 公共配置,不写密钥
    endpoint: oss-cn-beijing.aliyuncs.com

② application-local.yml (隐私配置,绝不提交Git

# 隐私配置:密钥、密码、SecretKey
aliyun:
  oss:
    accessKeyId: your-actual-key
    accessKeySecret: your-actual-secret

my:
  upload:
    bucketName: private-bucket

2. 最重要:把 local 文件加入 .gitignore !!

在项目根目录的 .gitignore 里加一行:

# 隐私配置文件,绝对不上传
application-local.yml

这样你的密钥永远不会泄露到云端!


三、启动 / 测试时如何激活 local?

方式1:yml 默认激活(推荐)

spring:
  profiles:
    active: local

直接启动项目就会自动加载隐私配置

方式2:命令行启动指定(测试/打包发布用)

# Jar 启动时指定激活 local
java -jar app.jar --spring.profiles.active=local

方式3:IDEA 运行配置里指定

Run/Debug Configurations →
Program arguments →

--spring.profiles.active=local

四、为什么这样最安全?

  1. local 文件永远不上Git
  2. 生产环境可以用 application-prod.yml,用服务器环境变量注入
  3. 配置自动合并:公共 + 隐私自动合在一起用
  4. 团队开发每个人自己填自己的密钥,互不干扰

五、代码里怎么用?

@Component
public class OssConfig {

    @Value("${aliyun.oss.accessKeyId}")
    private String accessKeyId;

    @Value("${aliyun.oss.accessKeySecret}")
    private String accessKeySecret;
}

完全不用改代码,自动读取 local 里的隐私配置!


六、最终结构

resources/
 ├─ application.yml       # 公共配置(提交)
 └─ application-local.yml # 隐私配置(不提交)

总结

  1. 公共配置application.yml
  2. 隐私配置application-local.yml + 加入 .gitignore
  3. 启动激活spring.profiles.active=local
  4. 安全:密钥永远不上传云端
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐