Spring Boot通过配置检查启动应用程序

时间:2018-11-07 08:24:26

标签: spring-boot lombok

这是一个Spring Boot应用程序。我想在开始时检查并通知用户,如果有人配置了错误的Yaml file。我想问你们中的一些人

  1. 这是实现它的正确方法吗?
  2. RuntimeException是正确的选择吗?
  3. 我是否正确使用了lombok注释?

谢谢

@Component
@ConfigurationProperties
@Data
@NoArgsConstructor
public class ApplicationProperties{

    @Data
    @NoArgsConstructor
    public static class Something {
        private String name;

        @Setter(AccessLevel.NONE)
        private int width;

        @Setter(AccessLevel.NONE)
        private int height;

        public void setWidth(int width) throws Throwable {
            if (0 > width || 100 < width) {
                throw new RuntimeException("The width should be between 0 and 100.");
            }
            this.width = width;
        }

        public void setHeight(int height) throws Throwable {
            if (0 > height || 250 < height) {
                throw new RuntimeException("The height should be between 0 and 250.");
            }
            this.height = height;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

首先,欢迎来到SO!让我解释一下如何验证应用程序属性。有一种简单的方法可以使用验证批注实现此目的。 ApplicationContextAware支持JSR-303 Bean验证:

BeanUtil

请注意,如果验证引发异常,此方法将使应用程序启动失败。

第二,要了解这是否是正确的方法,您必须描述您的用例。我个人会坚持使用现有标准,并使用验证批注流程。

最后,关于您的@ConfigurationProperties注释。您可以全局使用@ConfigurationProperties("prefix") public class MyProperties { @Max(100) @Min(0) private Integer width; @Max(100) @Min(1) private Integer height; } lombok批注,也可以像这样将其放在您的字段中以指定细粒度的访问。

我不是@Getter批注的忠实拥护者,因为它可能会生成一些您可能不需要(或可能再次取决于您的用法)想要的额外方法。我记得生成的@Setter方法在嵌套实体和循环依赖方面存在一些问题。