【问题标题】:How to provide Spring boot properties through a property bean getting initialised at app startup如何通过在应用程序启动时初始化的属性 bean 提供 Spring 引导属性
【发布时间】:2026-02-21 18:15:01
【问题描述】:

我有一个用例,其中我有一些包含属性的类,并在应用程序启动时从外部源初始化现在我想要 spring boot 自动配置的 bean,例如数据源从这些属性类中获取属性。

示例:

@Configuration
public class A {

String url;
String password;
String username:
.
.
.
othere datasource related fields 
.
.
.


getters...
setters...

}

现在这个 bean 将在启动时创建并从外部源获取值。 数据源 bean(sql server)的自动配置如何从这个类中获取值,以及如何在数据源之前强制初始化这个 bean。

【问题讨论】:

    标签: spring spring-boot spring-properties


    【解决方案1】:

    您可以为此使用 @ConfigurationProperties 注释类。它可用于从.properties.yml 文件中读取配置。

    使用示例:

    @Configuration
    @PropertySource("classpath:configprops.properties")
    @ConfigurationProperties(prefix = "myprop")
    public class ConfigProperties {
    
        private String property1;
        private String property2
    
        // getters and setters
    }
    

    .properties 文件中,我们按如下方式存储字段:

    #My properties
    myprop.property1=property
    myprop.property2=another property
    

    现在,根据 Spring 文档,使用 @ConfigurationProperties 注释类就足够了,以便将其转换为 bean 并使其能够自动装配。通常人们也倾向于应用@Configuration 注释。

    【讨论】:

    • 自动配置的 bean(如数据源)如何知道从此类的字段中获取属性。
    • 你自动装配其中的类。
    • 在这种情况下,我必须禁用自动装配 bean 的功能(弹簧启动的优势),我必须自己制作数据源 bean。
    • 如果你有 Spring,依赖注入就可以工作。还有其他解决方案,例如构造函数注入,以便在 Spring 未运行时能够注入依赖项。
    • 您不应添加@Configuration。它用于指示一个类配置 Spring bean,并且通常具有一个或多个 @Bean 方法。