为什么@ConfigurationProperties不会覆盖我的默认值?

时间:2015-03-23 21:12:05

标签: java spring annotations spring-boot configuration-files

我希望spring boot从我的application.properties中的条目中读取我的配置,但它们不会被激活。我的application.properties包含以下条目:

foo.user=nobody
foo.pass=notshared

我可以看到正在读取这个文件(我只有两次文件:一次在src-tree中,一次在bin中自动复制。文件相同):

2015-03-23 21:55:18.199 DEBUG 25004 --- [main] o.s.b.c.c.ConfigFileApplicationListener  : Loaded config file 'classpath:/application.properties' 

我有一个名为FooConfig的课程:

@Component
@ConfigurationProperties(prefix = "foo")
public class FooConfig {
  private String user = "default";
  private String pass = "default";
...
}

我有两个值的getter和setter。 我将此配置类自动连接到我的代码中:

@Component
public class FooFunctions {
    @Autowired
    public FooFunctions(FooConfig fooConfig) {
        log.debug("user={}", fooConfig.getUser());
...

问题是打印默认值“default”而不是application.properties中的值。 任何提示?不幸的是,我还不能使用执行器来显示配置属性,因为这是一个非Web应用程序。 我在春季靴子1.2.2上尝试所有这些。

1 个答案:

答案 0 :(得分:2)

为了制作

@ConfigurationProperties(prefix = "foo")

注释工作,你的春季启动应用程序必须有

@EnableConfigurationProperties

注释集。

无需在 ConfigurationProperties bean上设置 @Component 注释。