Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @ConfigurationProperties构造函数绑定在2.2.0.RC1中不起作用_Java_Spring Boot - Fatal编程技术网

Java @ConfigurationProperties构造函数绑定在2.2.0.RC1中不起作用

Java @ConfigurationProperties构造函数绑定在2.2.0.RC1中不起作用,java,spring-boot,Java,Spring Boot,我正在试用新的SpringBoot2.2.0.RC1版本,特别是第2.8.2节中描述的新的配置属性构造函数绑定特性。构造函数绑定。我建立了一个非常小的项目,课程如下: @Configuration @ConfigurationProperties("acme") public class AppConfig { private final String stuff; public AppConfig(String stuff) { this.stuff = st

我正在试用新的SpringBoot2.2.0.RC1版本,特别是第2.8.2节中描述的新的配置属性构造函数绑定特性。构造函数绑定。我建立了一个非常小的项目,课程如下:

@Configuration
@ConfigurationProperties("acme")
public class AppConfig {
    private final String stuff;

    public AppConfig(String stuff) {
        this.stuff = stuff;
    }

    public String getStuff() {
        return stuff;
    }
}
还有一个application.yml,如下所示:

server:
  port: 9000

acme:
  stuff: hello there
我的主要方法是在这门课上:

@SpringBootApplication
public class AcmeApplication {

    public static void main(String[] args) {
        new SpringApplicationBuilder(AcmeApplication.class)
                .logStartupInfo(true)
                .bannerMode(Banner.Mode.CONSOLE)
                .web(WebApplicationType.SERVLET)
                .run();
    }
}
运行应用程序的结果是以下输出:

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.acme.config.AppConfig required a bean of type 'java.lang.String
' that could not be found.


Action:

Consider defining a bean of type 'java.lang.String' in your configuration.
有趣的是,如果我将AppConfig类中的代码更改为使用属性绑定,通过删除构造函数、从“stuff”字段中删除“final”修饰符并添加一个setStuff(String)方法,应用程序可以正常启动(setStuff方法按预期调用)


在尝试让构造函数绑定工作时,我遗漏了什么?我尝试过删除@Configuration注释,添加@EnableConfigurationProperties注释,添加@ConfigurationPropertiesScan等等,但是从阅读文档来看,这些东西在这里似乎都不适用。在我看来,它试图注入Springbean,而不是构建和注入配置属性对象。这就是为什么我认为删除@Configuration注释可能会有所帮助,但没有什么不同。顺便说一下,我希望这个AppConfig是一个Springbean,这样我就可以将它注入到服务类中。这似乎就是原因 请查看整个线程以获得更多上下文。
这是前面提到的问题描述

我错看了里程碑文档。更新的RC1文档显示,我需要使用@ImmutableConfigurationProperties注释以及@ConfigurationPropertiesScan注释


另请参见:

Hmmm。当然,这是一个很好的信息,但我的症状不同。这些问题在应用程序启动后出现空值。我甚至无法启动应用程序。另外,我认为第一个问题是,他们在IntelliJ内部运行应用程序。我正在从命令行运行。