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

如何从BootstrapRegistryInitializer访问application.yml中的Spring属性?

从BootstrapRegistryInitializer访问application.yml属性的正确方式

要在BootstrapRegistryInitializer中读取application.yml的配置,需要完成两步操作:确保bootstrap上下文能加载application.yml,再从bootstrap上下文的Environment中读取目标属性。

1. 让bootstrap上下文加载application.yml

默认情况下,bootstrap上下文仅加载bootstrap.yml/bootstrap.properties这类专属配置文件。要让它加载application.yml以实现配置共享,可通过启动参数或系统属性指定:

  • 添加启动参数:--spring.cloud.bootstrap.name=application
  • 或者设置系统属性:spring.cloud.bootstrap.name=application

配置后,bootstrap上下文会和应用上下文共用application.yml,实现一处配置两处生效。

2. 在BootstrapRegistryInitializer中读取属性

修改你的Boostrap类,通过BootstrapRegistry获取已初始化的Environment实例,再从中读取配置属性:

public class Boostrap implements BootstrapRegistryInitializer {

    @Override
    public void initialize(BootstrapRegistry registry) {
        // 从bootstrap上下文获取Environment核心组件
        Environment environment = registry.getRegisteredInstance(Environment.class);
        // 读取myProps.username,第二个参数为可选默认值
        String username = environment.getProperty("myProps.username", "DefaultUser");

        registry.register(
            AwsParameterStoreClientCustomizer.class,
            context -> new ParameterStoreClientCustomizer(username)
        );
        registry.register(BootstrapItem.class, context -> new BootstrapItem("Test 123"));
    }
}

说明

  • Environment是bootstrap上下文初始化阶段就已注册的核心组件,直接通过registry.getRegisteredInstance()即可获取。
  • 使用getProperty()时可指定默认值,避免配置缺失导致的空指针问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:15:04