如果定义了未知属性,启动过程中会失败吗?

Fail during startup if unknown properties are defined?

我正在使用 spring 引导配置属性和可选 属性:

@ConfigurationProperties("my.properties")
public class MyProperties {

    List<String> optional = new ArrayList(); // optional property

    // getters/setters
}

当我的 application.yml 中定义了 属性 而我的属性 class 中没有定义时,我希望我的应用程序在启动期间失败,因为这可能是由拼写错误,因此可以防止在配置应用程序时出错。例如:

my:
  properties:
    optional2:
      - foo
      - bar

这是否可能,例如通过设置标志?

您可以在 @ConfigurationProperties 注释中将 ignoreUnknownFields 设置为 false (@ConfigurationProperties(value = "foo", ignoreUnknownFields = false))。

如果你愿意,当 java class 上没有对应的字段时 属性 会抛出异常(就像你的 optional2 属性示例)。

参见:https://tedblob.com/configurationproperties-ignoreunknownfields/

The @ConfigurationProperties provide an optional element ignoreUnknownFields using which you can ignore or throw errors for the unknown fields during binding the properties.