You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中使用secrets.yml存储Stripe API密钥遇配置问题

解决Spring项目中secrets.yml配置Stripe密钥无法加载的问题

问题分析

你当前的配置问题出在Spring Boot加载外部配置文件的逻辑以及属性层级匹配上——不管是带stripe嵌套层级还是顶级属性,都没和@Value的取值对应上,同时配置文件的加载规则也有冗余。

正确配置步骤

1. 调整secrets.yml的内容(两种可选方式)

方式一:保留stripe层级(推荐,属性分类更清晰)
stripe:
  stripe-public-key: pk_test_xxxxxx
  stripe-secret-key: sk_test_xxxxxx
方式二:使用顶级属性
stripe-public-key: pk_test_xxxxxx
stripe-secret-key: sk_test_xxxxxx

注意:YAML配置尽量用短横线分隔的小写命名(Spring Boot推荐规范),虽然大写也能识别,但统一规范可避免不必要的问题。

2. 修正application.properties的配置

不需要同时用spring.profiles.include和spring.config.additional-location,二选一即可,推荐用Spring Boot 2.4+支持的spring.config.import(更简洁):

# Spring Boot 2.4+ 推荐写法
spring.config.import=classpath:secrets.yml

如果是旧版本Spring Boot,用spring.config.additional-location:

spring.config.additional-location=classpath:secrets.yml

别加spring.profiles.include=secrets,除非你给secrets.yml加上spring.profiles: secrets标识,否则这个配置无效,反而会干扰加载。

3. 调整Java代码中的@Value注解

对应上面两种配置方式,修改属性名:

对应方式一(带stripe层级):
@Value("${stripe.stripe-public-key}")
private String stripePublicKey;

@Value("${stripe.stripe-secret-key}")
private String secretKey;
对应方式二(顶级属性):
@Value("${stripe-public-key}")
private String stripePublicKey;

@Value("${stripe-secret-key}")
private String secretKey;

4. 配置.gitignore

在项目根目录的.gitignore文件中添加:

src/main/resources/secrets.yml

确保密钥文件不会被提交到Git仓库。

验证步骤

  1. 确认secrets.yml和application.properties都在src/main/resources/目录下;
  2. 启动项目,若仍有问题,可添加日志打印属性值,或用Environment对象手动排查:
@Autowired
private Environment env;

// 测试获取属性
public void testProperties() {
    System.out.println("公钥:" + env.getProperty("stripe.stripe-public-key"));
    System.out.println("密钥:" + env.getProperty("stripe.stripe-secret-key"));
}

内容的提问来源于stack exchange,提问作者triplej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:38:12