Spring @ConfigurationProperties Root Config

时间:2017-09-05 06:59:26

标签: java spring spring-boot

通过@ConfigrationProperties编写spring配置时,有一种方法可以连接配置的根值。

我的配置类似于

foo.bar=hello
foo.bar.baz=world

如何从foo.bar变量中获取值。目前我有这个

@Configuration
@ConfigurationProperties("foo.bar")
public class FooBar {
    private String baz;

    // Getters and setters...
}

我无法更改架构。这些属性来自env变量FOO_BARFOO_BAR_BAZ

3 个答案:

答案 0 :(得分:1)

您需要使用@EnableConfigurationProprties(FooBar.class)告诉spring boot为您的配置创建一个bean。这样的事情对你有用:

@Configuration
@EnableConfigurationProperties(FooBar.class)
class MyConfiguration {
    final FooBar fooBar;

    MyConfiguration(FooBar fooBar) {
        this.fooBar = fooBar;
    }

    @ConfigurationProperties("foo.bar")
    static class FooBar {
        String baz;
        // ....
    }

    @Bean
    MyBean myBean() {
        // use this.fooBar here...
    }
}

答案 1 :(得分:0)

使用@PropertySource注释为您的类添加注释,并添加一个变量来获取它。

    @PropertySource("classpath:config.properties")
public class FooBar {
    @Value("${foo.bar}")
        private String baz;
}

答案 2 :(得分:0)

我正在为可能处于相同情况的某人写这篇文章:

  1. 在类中使用构造函数。
  2. 您还可以使用类级别的@Component
    代码:
    @Configuration
    @ConfigurationProperties(“ foo.bar”)
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    公共类FooBar {

    私有字符串baz;

    }

用于注释@ Data,@ AllArgsConstructor    @NoArgsConstructor,安装并使用lombok dependency