java - Spring Boot中使用YAML配置初始化Bean

标签 java spring spring-boot

我想在 Spring Boot 中初始化 bean 或服务时读取一些属性,例如数据库访问配置。

有人知道好的方法吗?

这是我当前的代码片段。

public class SampleApplication implements ApplicationRunner
{
    @Autowired
    private YAMLConfig myConfig;

    @Override
    public void run(ApplicationArguments args) throws Exception
    {
        System.out.println(myConfig != null); //YAMLConfig has been intialized here
    }

    public SampleApplication()
    {
        System.out.println(myConfig == null); //myConfig is null
    }

    @Configuration
    public static class Config
    {
        @Bean
        @ConditionalOnProperty(value = {"batch.execute"}, havingValue = "SampleApplication")
        public SampleApplication sampleApplication()
        {
            return new SampleApplication();
        }
    }
}

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class YAMLConfig
{
    private String environment;

    public String getEnvironment()
    {
        return environment;
    }

    public void setEnvironment(String environment)
    {
        this.environment = environment;
    }
}

感谢您查看此内容!

最佳答案

在您的 SampleApplication 类中创建此方法

@PostConstruct
public void init() {
    // at this point, all the dependency injection has happened already
    myConfig.doStuff()
}

所有bean初始化完成后,spring会自动调用它。

关于java - Spring Boot中使用YAML配置初始化Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48478441/

相关文章:

java - org.hibernate.LazyInitializationException : could not initialize proxy - no Session , 表示没有 getter,但我的 getter/setter 存在

java - 使用 Spring Boot 为我的 Web 服务器创建客户端库,该库在 Android 应用程序中使用

java - 通过 Spring 下载文件在 Firefox 中不起作用

elasticsearch - Spring boot、elasticsearch和spring data elasticsearch的兼容版本

java - 无法 Autowiring 。未找到 UserDetailSservice 类型的 Bean

java - 日历 String.valueOf()

java - Vaadin 浮点字段(来自字符串字段验证)

javascript - Java Android - 从 WebView 获取图像

java - Spring-data findFirstBy 抛出 IncorrectResultSizeDataAccessException?

java - 托管到服务器时,登录在 Spring Boot(使用 Spring Security)中不起作用