Spring Boot запускает приложение с проверкой конфигурации - PullRequest
0 голосов
/ 07 ноября 2018

Речь идет о 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 голосов
/ 07 ноября 2018

Прежде всего, добро пожаловать в ТАК! Позвольте мне объяснить, как вы можете проверить свойства приложения. Существует простой способ добиться этого, используя аннотации проверки. @ConfigurationProperties поддерживает проверку bean-компонента JSR-303:

@ConfigurationProperties("prefix")
public class MyProperties {

    @Max(100)
    @Min(0)
    private Integer width;

    @Max(100)
    @Min(1)
    private Integer height;
}

Обратите внимание, что при таком подходе запуск приложения не удастся, если проверка выдает исключение.

Во-вторых, чтобы понять, является ли это правильным способом, вам нужно будет описать свой вариант использования. Я бы лично придерживался существующих стандартов и использовал поток аннотаций валидации.

Наконец, что касается ваших lombok аннотаций. Вы можете использовать аннотации @Getter и @Setter либо глобально, либо разместить их так в своих полях, чтобы указать детальный доступ.

Я не большой поклонник аннотации @Data, поскольку она может генерировать некоторые дополнительные методы, которые вы, возможно, не захотите (или, возможно, опять же, зависит от вашего использования). Я помню некоторые проблемы с вложенными сущностями и циклическими зависимостями с помощью сгенерированного метода toString.

...