Обеспечение более удобного ведения журнала, когда свойство Spring недопустимо - PullRequest
0 голосов
/ 06 ноября 2019

Используя файл application.properties, мое приложение Spring Boot может использовать в нем некоторые значения свойств. Чтобы убедиться, что обязательное значение должно присутствовать, добавьте аннотацию @Value для свойства. Проблема в том, что приложение с треском проваливается, если значение свойства отсутствует в файле свойств.

Мне нужен более приятный, менее ужасный способ сказать, что вместо этого распечатывается строка журнала о "свойстве A"всего следа стека. Есть ли способ сделать это, все еще используя @Value для инициализации свойств? Например, свойство A является обязательным, ошибка регистрируется до выхода из приложения;свойство B отсутствует, но не является обязательным, предупреждение регистрируется и приложение продолжается.

Ответы [ 2 ]

2 голосов
/ 06 ноября 2019

Если вы можете идентифицировать все свойства, вы можете написать метод в классе Application с помощью @Postconstruct, а внутри вашего метода вы можете вручную проверить и зарегистрировать их

@Autowired
    private Environment environment;

    @PostConstruct
    private void validateProperties() {

        environment.getProperty(key);
        .....
        ......
    }

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

0 голосов
/ 06 ноября 2019

Поскольку вы используете spring-boot, рассмотрите возможность создания класса @ConfigurationProperties, а не использования аннотации @Value.

Таким образом вы сможете выполнять свои проверки с использованием Bean Validation Кроме того, в том же классе вы можете реализовать интерфейс InitializingBean и добавить дополнительные проверки / сообщения журнала, как вы.

Перейдите по этой ссылке в официальных документах Spring, чтобы узнать больше о @ConfigurationProperties.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...