在编译时验证 属性 application.yml 中的名称

Validate at compile time property names in application.yml

我想检查是否可以在编译时而非运行时验证 属性 名称。 我的 application.yml 需要这样的数据-

  john:
    firstName: John
    lastName: Doe
    age: 30
    address: efghhhhh
    email: john.doe@gmail.com

我的ApplicationProperties.java是这样的-

@Data
@Configuration
@PropertySource(value = "classpath:employee.yml", factory = YamlPropertySourceFactory.class)
public class ApplicationProperties {

    private Employee john;
}

我的控制器得到这样的数据 -

private final ApplicationProperties applicationProperties;
applicationProperties.getJohn();

我想确定如果有人错误地将“john”更改为“joohn”,它应该在编译时抛出错误。现在编译工作正常,它在运行时抛出 NullPointerException。是否可以实现 属性 名称的编译时检查?如果是这样,请告诉我该怎么做?

谢谢!

不是在编译时,但您可以通过为您的道具创建 @Validated @ConfigurationProperties(prefix = "john") 并将验证规则(如 @NotNull 放在相关属性的顶部)来确保应用程序快速失败。

有关详细信息,请参阅 here